@hoangsonw/forge 0.1.1 → 0.1.2-nightly.20260425
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +135 -63
- package/bin/README.md +118 -0
- package/bin/forge.js +2 -0
- package/dist/agents/architect.d.ts +8 -0
- package/dist/agents/architect.d.ts.map +1 -1
- package/dist/agents/architect.js +8 -6
- package/dist/agents/architect.js.map +1 -1
- package/dist/agents/base.d.ts +5 -0
- package/dist/agents/base.d.ts.map +1 -1
- package/dist/agents/base.js +5 -0
- package/dist/agents/base.js.map +1 -1
- package/dist/agents/debugger.d.ts +5 -0
- package/dist/agents/debugger.d.ts.map +1 -1
- package/dist/agents/debugger.js +5 -0
- package/dist/agents/debugger.js.map +1 -1
- package/dist/agents/executor.d.ts +5 -0
- package/dist/agents/executor.d.ts.map +1 -1
- package/dist/agents/executor.js +19 -2
- package/dist/agents/executor.js.map +1 -1
- package/dist/agents/memory.d.ts +3 -1
- package/dist/agents/memory.d.ts.map +1 -1
- package/dist/agents/memory.js +7 -5
- package/dist/agents/memory.js.map +1 -1
- package/dist/agents/narrator.d.ts +70 -0
- package/dist/agents/narrator.d.ts.map +1 -0
- package/dist/agents/narrator.js +186 -0
- package/dist/agents/narrator.js.map +1 -0
- package/dist/agents/planner.d.ts +5 -0
- package/dist/agents/planner.d.ts.map +1 -1
- package/dist/agents/planner.js +24 -2
- package/dist/agents/planner.js.map +1 -1
- package/dist/agents/registry.d.ts +7 -0
- package/dist/agents/registry.d.ts.map +1 -1
- package/dist/agents/registry.js +7 -0
- package/dist/agents/registry.js.map +1 -1
- package/dist/agents/reviewer.d.ts +7 -0
- package/dist/agents/reviewer.d.ts.map +1 -1
- package/dist/agents/reviewer.js +20 -5
- package/dist/agents/reviewer.js.map +1 -1
- package/dist/classifier/classifier.d.ts +5 -0
- package/dist/classifier/classifier.d.ts.map +1 -1
- package/dist/classifier/classifier.js +31 -1
- package/dist/classifier/classifier.js.map +1 -1
- package/dist/classifier/heuristics.d.ts +23 -0
- package/dist/classifier/heuristics.d.ts.map +1 -1
- package/dist/classifier/heuristics.js +58 -2
- package/dist/classifier/heuristics.js.map +1 -1
- package/dist/cli/animations.d.ts +8 -0
- package/dist/cli/animations.d.ts.map +1 -1
- package/dist/cli/animations.js +8 -6
- package/dist/cli/animations.js.map +1 -1
- package/dist/cli/banners.d.ts +8 -2
- package/dist/cli/banners.d.ts.map +1 -1
- package/dist/cli/banners.js +48 -18
- package/dist/cli/banners.js.map +1 -1
- package/dist/cli/bootstrap.d.ts +5 -0
- package/dist/cli/bootstrap.d.ts.map +1 -1
- package/dist/cli/bootstrap.js +5 -0
- package/dist/cli/bootstrap.js.map +1 -1
- package/dist/cli/choose.d.ts +34 -0
- package/dist/cli/choose.d.ts.map +1 -0
- package/dist/cli/choose.js +219 -0
- package/dist/cli/choose.js.map +1 -0
- package/dist/cli/commands/bundle.d.ts +5 -0
- package/dist/cli/commands/bundle.d.ts.map +1 -1
- package/dist/cli/commands/bundle.js +5 -0
- package/dist/cli/commands/bundle.js.map +1 -1
- package/dist/cli/commands/changelog.d.ts +5 -0
- package/dist/cli/commands/changelog.d.ts.map +1 -1
- package/dist/cli/commands/changelog.js +5 -0
- package/dist/cli/commands/changelog.js.map +1 -1
- package/dist/cli/commands/config.d.ts +5 -0
- package/dist/cli/commands/config.d.ts.map +1 -1
- package/dist/cli/commands/config.js +5 -0
- package/dist/cli/commands/config.js.map +1 -1
- package/dist/cli/commands/container.d.ts +5 -0
- package/dist/cli/commands/container.d.ts.map +1 -1
- package/dist/cli/commands/container.js +5 -0
- package/dist/cli/commands/container.js.map +1 -1
- package/dist/cli/commands/cost.d.ts +5 -0
- package/dist/cli/commands/cost.d.ts.map +1 -1
- package/dist/cli/commands/cost.js +5 -0
- package/dist/cli/commands/cost.js.map +1 -1
- package/dist/cli/commands/daemon.d.ts +5 -0
- package/dist/cli/commands/daemon.d.ts.map +1 -1
- package/dist/cli/commands/daemon.js +5 -0
- package/dist/cli/commands/daemon.js.map +1 -1
- package/dist/cli/commands/dev.d.ts +5 -0
- package/dist/cli/commands/dev.d.ts.map +1 -1
- package/dist/cli/commands/dev.js +5 -0
- package/dist/cli/commands/dev.js.map +1 -1
- package/dist/cli/commands/doctor.d.ts +5 -0
- package/dist/cli/commands/doctor.d.ts.map +1 -1
- package/dist/cli/commands/doctor.js +5 -0
- package/dist/cli/commands/doctor.js.map +1 -1
- package/dist/cli/commands/init.d.ts +5 -0
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +5 -0
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/mcp.d.ts +6 -0
- package/dist/cli/commands/mcp.d.ts.map +1 -1
- package/dist/cli/commands/mcp.js +6 -0
- package/dist/cli/commands/mcp.js.map +1 -1
- package/dist/cli/commands/memory.d.ts +5 -0
- package/dist/cli/commands/memory.d.ts.map +1 -1
- package/dist/cli/commands/memory.js +5 -0
- package/dist/cli/commands/memory.js.map +1 -1
- package/dist/cli/commands/migrate.d.ts +5 -0
- package/dist/cli/commands/migrate.d.ts.map +1 -1
- package/dist/cli/commands/migrate.js +5 -0
- package/dist/cli/commands/migrate.js.map +1 -1
- package/dist/cli/commands/model.d.ts +5 -0
- package/dist/cli/commands/model.d.ts.map +1 -1
- package/dist/cli/commands/model.js +5 -0
- package/dist/cli/commands/model.js.map +1 -1
- package/dist/cli/commands/permissions.d.ts +5 -0
- package/dist/cli/commands/permissions.d.ts.map +1 -1
- package/dist/cli/commands/permissions.js +5 -0
- package/dist/cli/commands/permissions.js.map +1 -1
- package/dist/cli/commands/resume.d.ts +5 -0
- package/dist/cli/commands/resume.d.ts.map +1 -1
- package/dist/cli/commands/resume.js +5 -0
- package/dist/cli/commands/resume.js.map +1 -1
- package/dist/cli/commands/run.d.ts +5 -0
- package/dist/cli/commands/run.d.ts.map +1 -1
- package/dist/cli/commands/run.js +21 -8
- package/dist/cli/commands/run.js.map +1 -1
- package/dist/cli/commands/session.d.ts +8 -0
- package/dist/cli/commands/session.d.ts.map +1 -1
- package/dist/cli/commands/session.js +8 -0
- package/dist/cli/commands/session.js.map +1 -1
- package/dist/cli/commands/skills.d.ts +5 -0
- package/dist/cli/commands/skills.d.ts.map +1 -1
- package/dist/cli/commands/skills.js +5 -0
- package/dist/cli/commands/skills.js.map +1 -1
- package/dist/cli/commands/spec.d.ts +6 -0
- package/dist/cli/commands/spec.d.ts.map +1 -1
- package/dist/cli/commands/spec.js +6 -0
- package/dist/cli/commands/spec.js.map +1 -1
- package/dist/cli/commands/status.d.ts +5 -0
- package/dist/cli/commands/status.d.ts.map +1 -1
- package/dist/cli/commands/status.js +5 -0
- package/dist/cli/commands/status.js.map +1 -1
- package/dist/cli/commands/task.d.ts +8 -0
- package/dist/cli/commands/task.d.ts.map +1 -1
- package/dist/cli/commands/task.js +76 -0
- package/dist/cli/commands/task.js.map +1 -1
- package/dist/cli/commands/ui.d.ts +5 -0
- package/dist/cli/commands/ui.d.ts.map +1 -1
- package/dist/cli/commands/ui.js +5 -0
- package/dist/cli/commands/ui.js.map +1 -1
- package/dist/cli/commands/update.d.ts +5 -0
- package/dist/cli/commands/update.d.ts.map +1 -1
- package/dist/cli/commands/update.js +5 -0
- package/dist/cli/commands/update.js.map +1 -1
- package/dist/cli/commands/web.d.ts +5 -0
- package/dist/cli/commands/web.d.ts.map +1 -1
- package/dist/cli/commands/web.js +5 -0
- package/dist/cli/commands/web.js.map +1 -1
- package/dist/cli/help.d.ts +2 -0
- package/dist/cli/help.d.ts.map +1 -1
- package/dist/cli/help.js +2 -0
- package/dist/cli/help.js.map +1 -1
- package/dist/cli/index.js +14 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/markdown.d.ts.map +1 -1
- package/dist/cli/markdown.js +115 -10
- package/dist/cli/markdown.js.map +1 -1
- package/dist/cli/progress.d.ts +42 -0
- package/dist/cli/progress.d.ts.map +1 -0
- package/dist/cli/progress.js +335 -0
- package/dist/cli/progress.js.map +1 -0
- package/dist/cli/repl-commands.d.ts +2 -0
- package/dist/cli/repl-commands.d.ts.map +1 -1
- package/dist/cli/repl-commands.js +2 -0
- package/dist/cli/repl-commands.js.map +1 -1
- package/dist/cli/repl-input.d.ts +3 -0
- package/dist/cli/repl-input.d.ts.map +1 -1
- package/dist/cli/repl-input.js +87 -39
- package/dist/cli/repl-input.js.map +1 -1
- package/dist/cli/repl.d.ts.map +1 -1
- package/dist/cli/repl.js +109 -29
- package/dist/cli/repl.js.map +1 -1
- package/dist/cli/ui.d.ts +9 -0
- package/dist/cli/ui.d.ts.map +1 -1
- package/dist/cli/ui.js +9 -0
- package/dist/cli/ui.js.map +1 -1
- package/dist/config/loader.d.ts +5 -0
- package/dist/config/loader.d.ts.map +1 -1
- package/dist/config/loader.js +5 -0
- package/dist/config/loader.js.map +1 -1
- package/dist/config/paths.d.ts +8 -0
- package/dist/config/paths.d.ts.map +1 -1
- package/dist/config/paths.js +8 -0
- package/dist/config/paths.js.map +1 -1
- package/dist/config/schema.d.ts +17 -0
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +17 -0
- package/dist/config/schema.js.map +1 -1
- package/dist/config/xdg.d.ts.map +1 -1
- package/dist/config/xdg.js +2 -0
- package/dist/config/xdg.js.map +1 -1
- package/dist/core/continuity.d.ts.map +1 -1
- package/dist/core/continuity.js +2 -0
- package/dist/core/continuity.js.map +1 -1
- package/dist/core/conversation.d.ts +2 -0
- package/dist/core/conversation.d.ts.map +1 -1
- package/dist/core/conversation.js +2 -0
- package/dist/core/conversation.js.map +1 -1
- package/dist/core/estimation.d.ts +2 -0
- package/dist/core/estimation.d.ts.map +1 -1
- package/dist/core/estimation.js.map +1 -1
- package/dist/core/fork.d.ts.map +1 -1
- package/dist/core/fork.js +2 -0
- package/dist/core/fork.js.map +1 -1
- package/dist/core/interactive-host.d.ts +11 -2
- package/dist/core/interactive-host.d.ts.map +1 -1
- package/dist/core/interactive-host.js +12 -0
- package/dist/core/interactive-host.js.map +1 -1
- package/dist/core/loop-detection.d.ts +2 -0
- package/dist/core/loop-detection.d.ts.map +1 -1
- package/dist/core/loop-detection.js.map +1 -1
- package/dist/core/loop.d.ts +11 -0
- package/dist/core/loop.d.ts.map +1 -1
- package/dist/core/loop.js +244 -26
- package/dist/core/loop.js.map +1 -1
- package/dist/core/mode-policy.d.ts +2 -0
- package/dist/core/mode-policy.d.ts.map +1 -1
- package/dist/core/mode-policy.js.map +1 -1
- package/dist/core/orchestrator.d.ts +14 -0
- package/dist/core/orchestrator.d.ts.map +1 -1
- package/dist/core/orchestrator.js +79 -1
- package/dist/core/orchestrator.js.map +1 -1
- package/dist/core/plan-fixer.d.ts +3 -1
- package/dist/core/plan-fixer.d.ts.map +1 -1
- package/dist/core/plan-fixer.js +10 -0
- package/dist/core/plan-fixer.js.map +1 -1
- package/dist/core/signals.d.ts.map +1 -1
- package/dist/core/signals.js +2 -0
- package/dist/core/signals.js.map +1 -1
- package/dist/core/spec.d.ts.map +1 -1
- package/dist/core/spec.js +2 -0
- package/dist/core/spec.js.map +1 -1
- package/dist/core/validation.d.ts.map +1 -1
- package/dist/core/validation.js +2 -0
- package/dist/core/validation.js.map +1 -1
- package/dist/daemon/control.d.ts +5 -0
- package/dist/daemon/control.d.ts.map +1 -1
- package/dist/daemon/control.js +5 -0
- package/dist/daemon/control.js.map +1 -1
- package/dist/daemon/server.d.ts +2 -0
- package/dist/daemon/server.d.ts.map +1 -1
- package/dist/daemon/server.js +7 -5
- package/dist/daemon/server.js.map +1 -1
- package/dist/daemon/updater.d.ts +5 -0
- package/dist/daemon/updater.d.ts.map +1 -1
- package/dist/daemon/updater.js +20 -6
- package/dist/daemon/updater.js.map +1 -1
- package/dist/keychain/index.d.ts.map +1 -1
- package/dist/keychain/index.js +2 -0
- package/dist/keychain/index.js.map +1 -1
- package/dist/keychain/windows.d.ts.map +1 -1
- package/dist/keychain/windows.js +2 -0
- package/dist/keychain/windows.js.map +1 -1
- package/dist/logging/logger.d.ts +9 -0
- package/dist/logging/logger.d.ts.map +1 -1
- package/dist/logging/logger.js +9 -5
- package/dist/logging/logger.js.map +1 -1
- package/dist/logging/rotation.d.ts.map +1 -1
- package/dist/logging/rotation.js +2 -0
- package/dist/logging/rotation.js.map +1 -1
- package/dist/logging/trace.d.ts +9 -0
- package/dist/logging/trace.d.ts.map +1 -1
- package/dist/logging/trace.js +9 -0
- package/dist/logging/trace.js.map +1 -1
- package/dist/mcp/client.d.ts +2 -0
- package/dist/mcp/client.d.ts.map +1 -1
- package/dist/mcp/client.js +8 -0
- package/dist/mcp/client.js.map +1 -1
- package/dist/mcp/http-transport.d.ts.map +1 -1
- package/dist/mcp/http-transport.js +2 -0
- package/dist/mcp/http-transport.js.map +1 -1
- package/dist/mcp/oauth.d.ts.map +1 -1
- package/dist/mcp/oauth.js +2 -0
- package/dist/mcp/oauth.js.map +1 -1
- package/dist/mcp/registry.d.ts +6 -0
- package/dist/mcp/registry.d.ts.map +1 -1
- package/dist/mcp/registry.js +6 -0
- package/dist/mcp/registry.js.map +1 -1
- package/dist/memory/cold.d.ts.map +1 -1
- package/dist/memory/cold.js +2 -0
- package/dist/memory/cold.js.map +1 -1
- package/dist/memory/graph.d.ts.map +1 -1
- package/dist/memory/graph.js +2 -0
- package/dist/memory/graph.js.map +1 -1
- package/dist/memory/hot.d.ts +2 -0
- package/dist/memory/hot.d.ts.map +1 -1
- package/dist/memory/hot.js +2 -0
- package/dist/memory/hot.js.map +1 -1
- package/dist/memory/learning.d.ts.map +1 -1
- package/dist/memory/learning.js +2 -0
- package/dist/memory/learning.js.map +1 -1
- package/dist/memory/retrieval.d.ts.map +1 -1
- package/dist/memory/retrieval.js +2 -0
- package/dist/memory/retrieval.js.map +1 -1
- package/dist/memory/warm.d.ts.map +1 -1
- package/dist/memory/warm.js +2 -0
- package/dist/memory/warm.js.map +1 -1
- package/dist/migrations/runner.d.ts +2 -0
- package/dist/migrations/runner.d.ts.map +1 -1
- package/dist/migrations/runner.js +2 -0
- package/dist/migrations/runner.js.map +1 -1
- package/dist/models/adapter.d.ts +2 -0
- package/dist/models/adapter.d.ts.map +1 -1
- package/dist/models/adapter.js +14 -0
- package/dist/models/adapter.js.map +1 -1
- package/dist/models/anthropic.d.ts +11 -1
- package/dist/models/anthropic.d.ts.map +1 -1
- package/dist/models/anthropic.js +128 -5
- package/dist/models/anthropic.js.map +1 -1
- package/dist/models/cache.d.ts +9 -0
- package/dist/models/cache.d.ts.map +1 -1
- package/dist/models/cache.js +9 -7
- package/dist/models/cache.js.map +1 -1
- package/dist/models/circuit-breaker.d.ts +2 -0
- package/dist/models/circuit-breaker.d.ts.map +1 -1
- package/dist/models/circuit-breaker.js +8 -0
- package/dist/models/circuit-breaker.js.map +1 -1
- package/dist/models/cost.d.ts +8 -0
- package/dist/models/cost.d.ts.map +1 -1
- package/dist/models/cost.js +4 -2
- package/dist/models/cost.js.map +1 -1
- package/dist/models/llamacpp.d.ts +3 -1
- package/dist/models/llamacpp.d.ts.map +1 -1
- package/dist/models/llamacpp.js +5 -3
- package/dist/models/llamacpp.js.map +1 -1
- package/dist/models/lmstudio.d.ts +3 -1
- package/dist/models/lmstudio.d.ts.map +1 -1
- package/dist/models/lmstudio.js +5 -3
- package/dist/models/lmstudio.js.map +1 -1
- package/dist/models/local-catalog.d.ts +2 -0
- package/dist/models/local-catalog.d.ts.map +1 -1
- package/dist/models/local-catalog.js.map +1 -1
- package/dist/models/ollama.d.ts +24 -1
- package/dist/models/ollama.d.ts.map +1 -1
- package/dist/models/ollama.js +158 -1
- package/dist/models/ollama.js.map +1 -1
- package/dist/models/openai.d.ts +11 -1
- package/dist/models/openai.d.ts.map +1 -1
- package/dist/models/openai.js +108 -5
- package/dist/models/openai.js.map +1 -1
- package/dist/models/provider.d.ts +5 -0
- package/dist/models/provider.d.ts.map +1 -1
- package/dist/models/provider.js +5 -0
- package/dist/models/provider.js.map +1 -1
- package/dist/models/rate-limit.d.ts +2 -0
- package/dist/models/rate-limit.d.ts.map +1 -1
- package/dist/models/rate-limit.js +7 -0
- package/dist/models/rate-limit.js.map +1 -1
- package/dist/models/registry.d.ts +5 -0
- package/dist/models/registry.d.ts.map +1 -1
- package/dist/models/registry.js +5 -0
- package/dist/models/registry.js.map +1 -1
- package/dist/models/router.d.ts +24 -0
- package/dist/models/router.d.ts.map +1 -1
- package/dist/models/router.js +163 -3
- package/dist/models/router.js.map +1 -1
- package/dist/models/vllm.d.ts +3 -1
- package/dist/models/vllm.d.ts.map +1 -1
- package/dist/models/vllm.js +5 -3
- package/dist/models/vllm.js.map +1 -1
- package/dist/notifications/manager.d.ts +7 -0
- package/dist/notifications/manager.d.ts.map +1 -1
- package/dist/notifications/manager.js +7 -0
- package/dist/notifications/manager.js.map +1 -1
- package/dist/permissions/manager.d.ts +8 -0
- package/dist/permissions/manager.d.ts.map +1 -1
- package/dist/permissions/manager.js +33 -18
- package/dist/permissions/manager.js.map +1 -1
- package/dist/permissions/risk.d.ts +3 -1
- package/dist/permissions/risk.d.ts.map +1 -1
- package/dist/permissions/risk.js +4 -2
- package/dist/permissions/risk.js.map +1 -1
- package/dist/persistence/compression.d.ts +8 -0
- package/dist/persistence/compression.d.ts.map +1 -1
- package/dist/persistence/compression.js +8 -6
- package/dist/persistence/compression.js.map +1 -1
- package/dist/persistence/conversation-store.d.ts +2 -0
- package/dist/persistence/conversation-store.d.ts.map +1 -1
- package/dist/persistence/conversation-store.js +2 -0
- package/dist/persistence/conversation-store.js.map +1 -1
- package/dist/persistence/events.d.ts +35 -0
- package/dist/persistence/events.d.ts.map +1 -1
- package/dist/persistence/events.js +41 -1
- package/dist/persistence/events.js.map +1 -1
- package/dist/persistence/index-db.d.ts +12 -0
- package/dist/persistence/index-db.d.ts.map +1 -1
- package/dist/persistence/index-db.js +20 -1
- package/dist/persistence/index-db.js.map +1 -1
- package/dist/persistence/jsonl.d.ts +2 -0
- package/dist/persistence/jsonl.d.ts.map +1 -1
- package/dist/persistence/jsonl.js +6 -4
- package/dist/persistence/jsonl.js.map +1 -1
- package/dist/persistence/sessions.d.ts +7 -0
- package/dist/persistence/sessions.d.ts.map +1 -1
- package/dist/persistence/sessions.js +7 -0
- package/dist/persistence/sessions.js.map +1 -1
- package/dist/persistence/tasks.d.ts +15 -0
- package/dist/persistence/tasks.d.ts.map +1 -1
- package/dist/persistence/tasks.js +32 -2
- package/dist/persistence/tasks.js.map +1 -1
- package/dist/prompts/assembler.d.ts +6 -0
- package/dist/prompts/assembler.d.ts.map +1 -1
- package/dist/prompts/assembler.js +6 -0
- package/dist/prompts/assembler.js.map +1 -1
- package/dist/prompts/layers.d.ts +5 -0
- package/dist/prompts/layers.d.ts.map +1 -1
- package/dist/prompts/layers.js +5 -0
- package/dist/prompts/layers.js.map +1 -1
- package/dist/release/download.d.ts.map +1 -1
- package/dist/release/download.js +2 -0
- package/dist/release/download.js.map +1 -1
- package/dist/release/verify.d.ts.map +1 -1
- package/dist/release/verify.js +2 -0
- package/dist/release/verify.js.map +1 -1
- package/dist/sandbox/file-lock.d.ts +40 -0
- package/dist/sandbox/file-lock.d.ts.map +1 -0
- package/dist/sandbox/file-lock.js +118 -0
- package/dist/sandbox/file-lock.js.map +1 -0
- package/dist/sandbox/fs.d.ts +5 -0
- package/dist/sandbox/fs.d.ts.map +1 -1
- package/dist/sandbox/fs.js +24 -1
- package/dist/sandbox/fs.js.map +1 -1
- package/dist/sandbox/shell.d.ts +5 -0
- package/dist/sandbox/shell.d.ts.map +1 -1
- package/dist/sandbox/shell.js +5 -0
- package/dist/sandbox/shell.js.map +1 -1
- package/dist/scheduler/dag.d.ts +5 -0
- package/dist/scheduler/dag.d.ts.map +1 -1
- package/dist/scheduler/dag.js +5 -0
- package/dist/scheduler/dag.js.map +1 -1
- package/dist/scheduler/resource-manager.d.ts +2 -0
- package/dist/scheduler/resource-manager.d.ts.map +1 -1
- package/dist/scheduler/resource-manager.js +7 -0
- package/dist/scheduler/resource-manager.js.map +1 -1
- package/dist/security/injection.d.ts +2 -0
- package/dist/security/injection.d.ts.map +1 -1
- package/dist/security/injection.js +2 -0
- package/dist/security/injection.js.map +1 -1
- package/dist/security/redact.d.ts +2 -0
- package/dist/security/redact.d.ts.map +1 -1
- package/dist/security/redact.js +2 -0
- package/dist/security/redact.js.map +1 -1
- package/dist/skills/loader.d.ts +5 -0
- package/dist/skills/loader.d.ts.map +1 -1
- package/dist/skills/loader.js +5 -0
- package/dist/skills/loader.js.map +1 -1
- package/dist/skills/marketplace.d.ts.map +1 -1
- package/dist/skills/marketplace.js +2 -0
- package/dist/skills/marketplace.js.map +1 -1
- package/dist/tools/apply-patch.d.ts +3 -1
- package/dist/tools/apply-patch.d.ts.map +1 -1
- package/dist/tools/apply-patch.js +11 -0
- package/dist/tools/apply-patch.js.map +1 -1
- package/dist/tools/ask-user.d.ts +9 -0
- package/dist/tools/ask-user.d.ts.map +1 -1
- package/dist/tools/ask-user.js +30 -5
- package/dist/tools/ask-user.js.map +1 -1
- package/dist/tools/delete-file.d.ts +5 -0
- package/dist/tools/delete-file.d.ts.map +1 -1
- package/dist/tools/delete-file.js +5 -0
- package/dist/tools/delete-file.js.map +1 -1
- package/dist/tools/edit-file.d.ts +5 -0
- package/dist/tools/edit-file.d.ts.map +1 -1
- package/dist/tools/edit-file.js +61 -34
- package/dist/tools/edit-file.js.map +1 -1
- package/dist/tools/format.d.ts +7 -0
- package/dist/tools/format.d.ts.map +1 -1
- package/dist/tools/format.js +7 -5
- package/dist/tools/format.js.map +1 -1
- package/dist/tools/git.d.ts +7 -0
- package/dist/tools/git.d.ts.map +1 -1
- package/dist/tools/git.js +7 -0
- package/dist/tools/git.js.map +1 -1
- package/dist/tools/glob.d.ts +5 -0
- package/dist/tools/glob.d.ts.map +1 -1
- package/dist/tools/glob.js +5 -0
- package/dist/tools/glob.js.map +1 -1
- package/dist/tools/grep.d.ts +5 -0
- package/dist/tools/grep.d.ts.map +1 -1
- package/dist/tools/grep.js +5 -0
- package/dist/tools/grep.js.map +1 -1
- package/dist/tools/init.d.ts +5 -0
- package/dist/tools/init.d.ts.map +1 -1
- package/dist/tools/init.js +5 -0
- package/dist/tools/init.js.map +1 -1
- package/dist/tools/list-dir.d.ts +5 -0
- package/dist/tools/list-dir.d.ts.map +1 -1
- package/dist/tools/list-dir.js +5 -0
- package/dist/tools/list-dir.js.map +1 -1
- package/dist/tools/move-file.d.ts +5 -0
- package/dist/tools/move-file.d.ts.map +1 -1
- package/dist/tools/move-file.js +9 -2
- package/dist/tools/move-file.js.map +1 -1
- package/dist/tools/read-file.d.ts +5 -0
- package/dist/tools/read-file.d.ts.map +1 -1
- package/dist/tools/read-file.js +5 -0
- package/dist/tools/read-file.js.map +1 -1
- package/dist/tools/registry.d.ts +5 -0
- package/dist/tools/registry.d.ts.map +1 -1
- package/dist/tools/registry.js +5 -0
- package/dist/tools/registry.js.map +1 -1
- package/dist/tools/run-command.d.ts +5 -0
- package/dist/tools/run-command.d.ts.map +1 -1
- package/dist/tools/run-command.js +5 -0
- package/dist/tools/run-command.js.map +1 -1
- package/dist/tools/run-tests.d.ts +6 -1
- package/dist/tools/run-tests.d.ts.map +1 -1
- package/dist/tools/run-tests.js +39 -0
- package/dist/tools/run-tests.js.map +1 -1
- package/dist/tools/web-browse.d.ts +5 -0
- package/dist/tools/web-browse.d.ts.map +1 -1
- package/dist/tools/web-browse.js +5 -0
- package/dist/tools/web-browse.js.map +1 -1
- package/dist/tools/web-fetch.d.ts +5 -0
- package/dist/tools/web-fetch.d.ts.map +1 -1
- package/dist/tools/web-fetch.js +5 -0
- package/dist/tools/web-fetch.js.map +1 -1
- package/dist/tools/web-search.d.ts +5 -0
- package/dist/tools/web-search.d.ts.map +1 -1
- package/dist/tools/web-search.js +5 -0
- package/dist/tools/web-search.js.map +1 -1
- package/dist/tools/write-file.d.ts +5 -0
- package/dist/tools/write-file.d.ts.map +1 -1
- package/dist/tools/write-file.js +43 -24
- package/dist/tools/write-file.js.map +1 -1
- package/dist/types/errors.d.ts +5 -0
- package/dist/types/errors.d.ts.map +1 -1
- package/dist/types/errors.js +5 -0
- package/dist/types/errors.js.map +1 -1
- package/dist/types/index.d.ts +35 -2
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +2 -0
- package/dist/types/index.js.map +1 -1
- package/dist/ui/chat.d.ts +2 -0
- package/dist/ui/chat.d.ts.map +1 -1
- package/dist/ui/chat.js +2 -0
- package/dist/ui/chat.js.map +1 -1
- package/dist/ui/public/app.js +701 -51
- package/dist/ui/public/index.html +4 -1
- package/dist/ui/public/markdown.js +108 -13
- package/dist/ui/public/styles.css +232 -4
- package/dist/ui/server-errors.d.ts +3 -1
- package/dist/ui/server-errors.d.ts.map +1 -1
- package/dist/ui/server-errors.js +3 -1
- package/dist/ui/server-errors.js.map +1 -1
- package/dist/ui/server.d.ts.map +1 -1
- package/dist/ui/server.js +62 -2
- package/dist/ui/server.js.map +1 -1
- package/dist/ui/task-runner.d.ts +2 -1
- package/dist/ui/task-runner.d.ts.map +1 -1
- package/dist/ui/task-runner.js +147 -14
- package/dist/ui/task-runner.js.map +1 -1
- package/dist/web/browse.d.ts.map +1 -1
- package/dist/web/browse.js +3 -1
- package/dist/web/browse.js.map +1 -1
- package/dist/web/fetch.d.ts.map +1 -1
- package/dist/web/fetch.js +3 -1
- package/dist/web/fetch.js.map +1 -1
- package/dist/web/sanitize.d.ts.map +1 -1
- package/dist/web/sanitize.js +2 -0
- package/dist/web/sanitize.js.map +1 -1
- package/dist/web/search.d.ts.map +1 -1
- package/dist/web/search.js +2 -0
- package/dist/web/search.js.map +1 -1
- package/install/install.ps1 +1 -1
- package/install/install.sh +2 -2
- package/package.json +5 -5
- package/scripts/bundle.js +2 -0
- package/scripts/copy-assets.js +2 -0
- package/scripts/link.sh +1 -0
- package/scripts/metrics.sh +2 -0
- package/scripts/postinstall.js +2 -0
package/README.md
CHANGED
|
@@ -4,14 +4,16 @@
|
|
|
4
4
|
|
|
5
5
|
# Forge
|
|
6
6
|
|
|
7
|
-
**A local-first, multi-agent, programmable software-engineering runtime.**
|
|
7
|
+
**A local-first, plan-first, multi-agent, and programmable software-engineering runtime.**
|
|
8
8
|
|
|
9
9
|
*Not an assistant. A runtime.* Forge brings its own scheduler, sandbox,
|
|
10
10
|
permission system, state machine, agentic loop, memory layers, and
|
|
11
11
|
plugin ecosystem. You pick the model. You approve the actions. Everything
|
|
12
12
|
is inspectable, replayable, and yours.
|
|
13
13
|
|
|
14
|
-
|
|
14
|
+
<img src="images/logo.jpeg" alt="Forge logo" width="50%" />
|
|
15
|
+
|
|
16
|
+
**[Install](https://github.com/hoangsonww/Forge-Agentic-Coding-CLI/blob/master/docs/INSTALL.md) · [Dev setup](https://github.com/hoangsonww/Forge-Agentic-Coding-CLI/blob/master/docs/SETUP.md) · [Architecture](https://github.com/hoangsonww/Forge-Agentic-Coding-CLI/blob/master/docs/ARCHITECTURE.md) · [Releases & versioning](https://github.com/hoangsonww/Forge-Agentic-Coding-CLI/blob/master/RELEASES.md) · [Demo walkthrough](DEMO.md) · [Wiki Page](https://hoangsonww.github.io/Forge-Agentic-Coding-CLI/) · [NPM Package](https://www.npmjs.com/package/@hoangsonw/forge) · [License](LICENSE)**
|
|
15
17
|
|
|
16
18
|
</div>
|
|
17
19
|
|
|
@@ -42,25 +44,25 @@ is inspectable, replayable, and yours.
|
|
|
42
44
|
|
|
43
45
|
## At a glance
|
|
44
46
|
|
|
45
|
-
Forge is a local-first, multi-agent, programmable software-engineering runtime. Unlike Claude Code or OpenAI Codex, Forge is local-first infrastructure, not a hosted assistant. It brings its own scheduler, sandbox, permission system, state machine, agentic loop, memory layers, and plugin ecosystem. You pick & host the model. You approve the actions. Everything is inspectable, replayable, and yours.
|
|
47
|
+
Forge is a local-first, plan-first, multi-agent, and programmable software-engineering runtime. Unlike Claude Code or OpenAI Codex, Forge is local-first infrastructure, not a hosted assistant. It brings its own scheduler, sandbox, permission system, state machine, agentic loop, memory layers, and plugin ecosystem. You pick & host the model. You approve the actions. Everything is inspectable, replayable, and yours.
|
|
46
48
|
|
|
47
49
|
<div align="center">
|
|
48
50
|
|
|
49
|
-
|
|
|
50
|
-
|
|
51
|
-
| ⚡ **`forge doctor` cold-start**
|
|
52
|
-
| ⚡ **`forge --help` cold-start**
|
|
53
|
-
| 📦 **UI shell · zero CDN**
|
|
54
|
-
| 🌐 **Provider probe timeout**
|
|
55
|
-
| 🔌 **Model providers** (auto-detected)
|
|
56
|
-
| 🧠 **Model families** classified
|
|
57
|
-
| 🤖 **Built-in agents**
|
|
58
|
-
| 🛠 **Tools** available to agents
|
|
59
|
-
| 💬 **CLI subcommands · slash commands** | **24 · 55**
|
|
60
|
-
| 🎛 **Modes**
|
|
61
|
-
| ✅ **Tests**
|
|
62
|
-
| 🐳 **CI jobs · release stages**
|
|
63
|
-
| 📦 **Container image**
|
|
51
|
+
| | value | reproducer |
|
|
52
|
+
|-----------------------------------------|-------------------------------------------------------|-------------------------------------------------------------------------------------|
|
|
53
|
+
| ⚡ **`forge doctor` cold-start** | **173 ms** | `time node bin/forge.js doctor --no-banner` |
|
|
54
|
+
| ⚡ **`forge --help` cold-start** | **238 ms** | `time node bin/forge.js --help` |
|
|
55
|
+
| 📦 **UI shell · zero CDN** | **90 KB** uncompressed | `wc -c src/ui/public/app.js` |
|
|
56
|
+
| 🌐 **Provider probe timeout** | **1.5 s** | `src/models/openai.ts#isAvailable` |
|
|
57
|
+
| 🔌 **Model providers** (auto-detected) | **6** | ollama · lmstudio · vllm · llama.cpp · openai-compat · anthropic |
|
|
58
|
+
| 🧠 **Model families** classified | **41** | Llama / Qwen / DeepSeek / Gemma / Phi / Mistral / Codestral / … |
|
|
59
|
+
| 🤖 **Built-in agents** | **6** | planner · architect · executor · reviewer · debugger · memory |
|
|
60
|
+
| 🛠 **Tools** available to agents | **18** | read · write · edit · grep · glob · run_command · git · web · … |
|
|
61
|
+
| 💬 **CLI subcommands · slash commands** | **24 · 55** | `forge --help` · `/help` in REPL |
|
|
62
|
+
| 🎛 **Modes** | **9** | fast · balanced · heavy · plan · execute · audit · debug · architect · offline-safe |
|
|
63
|
+
| ✅ **Tests** | **548 / 97 files** · 100% passing · ~5.5 s wall-clock | `npx vitest run` |
|
|
64
|
+
| 🐳 **CI jobs · release stages** | **9 · 6** | [`.github/workflows/`](.github/workflows) |
|
|
65
|
+
| 📦 **Container image** | ~355 MB · multi-arch · non-root · HEALTHCHECK | `docker pull ghcr.io/hoangsonw/forge-agentic-coding-cli:latest` |
|
|
64
66
|
|
|
65
67
|
</div>
|
|
66
68
|
|
|
@@ -70,7 +72,7 @@ Forge is a local-first, multi-agent, programmable software-engineering runtime.
|
|
|
70
72
|

|
|
71
73
|

|
|
72
74
|

|
|
73
|
-

|
|
74
76
|

|
|
75
77
|

|
|
76
78
|

|
|
@@ -84,76 +86,74 @@ Forge is a local-first, multi-agent, programmable software-engineering runtime.
|
|
|
84
86
|

|
|
85
87
|

|
|
86
88
|

|
|
87
|
-

|
|
88
|
-

|
|
89
|
-

|
|
90
|
-

|
|
91
|
-

|
|
89
|
+

|
|
90
|
+

|
|
91
|
+

|
|
92
|
+

|
|
92
93
|

|
|
93
|
-

|
|
94
|
+

|
|
94
95
|

|
|
95
|
-

|
|
96
|
+

|
|
96
97
|

|
|
97
|
-

|
|
98
|
+

|
|
98
99
|

|
|
99
|
-

|
|
100
|
-

|
|
101
|
-

|
|
102
|
-

|
|
103
|
-

|
|
101
|
+

|
|
102
|
+

|
|
103
|
+

|
|
104
|
+

|
|
104
105
|

|
|
105
106
|

|
|
106
107
|

|
|
107
108
|

|
|
108
|
-

|
|
109
|
+

|
|
110
|
+

|
|
110
111
|

|
|
111
112
|

|
|
112
113
|

|
|
113
114
|

|
|
114
115
|

|
|
115
116
|

|
|
116
|
-

|
|
117
|
-

|
|
118
|
-

|
|
117
|
+

|
|
118
|
+

|
|
119
|
+

|
|
119
120
|

|
|
120
121
|

|
|
121
122
|

|
|
122
|
-

|
|
123
|
+

|
|
123
124
|

|
|
124
125
|

|
|
125
126
|

|
|
126
127
|

|
|
127
|
-

|
|
128
|
-

|
|
129
|
-

|
|
128
|
+

|
|
129
|
+

|
|
130
|
+

|
|
130
131
|

|
|
131
|
-

|
|
134
|
-

|
|
135
|
-

|
|
136
|
-

|
|
132
|
+

|
|
133
|
+

|
|
134
|
+

|
|
135
|
+

|
|
136
|
+

|
|
137
|
+

|
|
137
138
|

|
|
138
139
|

|
|
139
|
-

|
|
140
|
+

|
|
140
141
|

|
|
141
|
-

|
|
142
143
|

|
|
143
|
-

|
|
144
|
+

|
|
144
145
|

|
|
145
146
|

|
|
146
|
-

|
|
147
148
|

|
|
148
149
|

|
|
149
150
|

|
|
150
|
-

|
|
151
|
+

|
|
152
|
+

|
|
153
|
+

|
|
154
154
|

|
|
155
155
|

|
|
156
|
-

|
|
157
157
|

|
|
158
158
|
|
|
159
159
|
---
|
|
@@ -237,9 +237,38 @@ docker compose -f docker/docker-compose.yml up -d
|
|
|
237
237
|
# open http://127.0.0.1:7823
|
|
238
238
|
```
|
|
239
239
|
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
240
|
+
### System requirements
|
|
241
|
+
|
|
242
|
+
| | Minimum | Notes |
|
|
243
|
+
|---|---|---|
|
|
244
|
+
| **Node.js** | **≥ 20** (22 tested) | Enforced via `package.json#engines`. Not needed if you use Docker. |
|
|
245
|
+
| **OS** | macOS · Linux · Windows (WSL recommended) | `better-sqlite3` ships prebuilds for darwin-x64, darwin-arm64, linux-x64, linux-arm64, win32-x64 — no compile step. |
|
|
246
|
+
| **Disk** | ~150 MB for `node_modules`; state under `~/.forge` grows with history | Override via `FORGE_HOME`. |
|
|
247
|
+
| **RAM** | Forge ~100 MB; your local model consumes its own RAM/VRAM | `forge doctor` cold-starts in ~170 ms. |
|
|
248
|
+
| **Docker** (alt path) | ≥ 25 | Multi-arch (amd64, arm64) image on GHCR. Zero host Node needed. |
|
|
249
|
+
| **At least one model source** | Ollama · LM Studio · vLLM · llama.cpp · Anthropic · OpenAI-compatible | `forge doctor` tells you which are reachable. |
|
|
250
|
+
|
|
251
|
+
**Runtime npm dependencies** (13, zero optional): `@modelcontextprotocol/sdk`, `better-sqlite3` (native, prebuilt), `chalk`, `cli-table3`, `commander`, `dotenv`, `ora`, `prompts`, `semver`, `undici`, `ws`, `yaml`, `zod`. No Python, Rust, or Go toolchain.
|
|
252
|
+
|
|
253
|
+
**Recommended** (not required): `ripgrep` (fast `grep` tool path), `git` (diff/status tools + project-root detection), `$EDITOR` (used when you pick "Edit" on a plan).
|
|
254
|
+
|
|
255
|
+
See [`docs/INSTALL.md`](docs/INSTALL.md) for per-OS notes and [`docs/SETUP.md`](docs/SETUP.md) for contributor setup.
|
|
256
|
+
|
|
257
|
+
### See it running
|
|
258
|
+
|
|
259
|
+
Three surfaces, one runtime.
|
|
260
|
+
|
|
261
|
+
**REPL (Interactive Terminal) Mode**
|
|
262
|
+
|
|
263
|
+
https://github.com/user-attachments/assets/eb592bbf-62a1-4d74-a540-7e066ebe56a4
|
|
264
|
+
|
|
265
|
+
**CLI (Headless, One-shot run) Mode**
|
|
266
|
+
|
|
267
|
+
https://github.com/user-attachments/assets/bc3b3204-fd87-436f-9467-604535edb4e2
|
|
268
|
+
|
|
269
|
+
**Web UI Dashboard**
|
|
270
|
+
|
|
271
|
+
https://github.com/user-attachments/assets/218cd64f-40fe-4836-9c62-c7a08538056b
|
|
243
272
|
|
|
244
273
|
---
|
|
245
274
|
|
|
@@ -498,6 +527,42 @@ warns once, never refuses to route.
|
|
|
498
527
|
Unknown models are accepted too — Forge rates them as generic executors
|
|
499
528
|
rather than refusing to route.
|
|
500
529
|
|
|
530
|
+
### Model size & capability notes
|
|
531
|
+
|
|
532
|
+
The agentic loop is cheap for the runtime but expensive for the *model*.
|
|
533
|
+
Every step is a multi-turn tool-use conversation that returns strict JSON.
|
|
534
|
+
Small models struggle with this in recognisable ways — please pick the
|
|
535
|
+
right tool for the job.
|
|
536
|
+
|
|
537
|
+
| Work you want to do | Safe local floor | What fails below the floor |
|
|
538
|
+
|---|---|---|
|
|
539
|
+
| Pure chat ("explain closures") | any 3B instruct (phi-3:mini, gemma-3:2b) | fine — conversation fast-path bypasses tool use entirely |
|
|
540
|
+
| Summarize a file, explain a snippet | 7B instruct (qwen2.5:7b, llama3.1:8b) | summary is a line of "I read the file" instead of content |
|
|
541
|
+
| Single-file edits / small features | **7B+ code specialist** (deepseek-coder:6.7b, qwen2.5-coder:7b) | picks wrong tool (run_command to write files), splits "create empty + edit" patterns, escalates to ask_user on tool errors |
|
|
542
|
+
| Multi-file refactors, new features | 14B+ code specialist or a hosted frontier model | plan quality drops; step IDs get inconsistent; validation retries exhausted |
|
|
543
|
+
| Architecture-level changes | hosted (Claude Opus/Sonnet, GPT-4 class) realistically | budgets blow out; changes go off-plan |
|
|
544
|
+
|
|
545
|
+
Forge ships with defences so a small model fails *loudly* instead of
|
|
546
|
+
silently corrupting files: the executor prompt spells out step-type →
|
|
547
|
+
tool mappings, `ask_user` rejects empty/too-short questions as
|
|
548
|
+
non-retryable, `edit_file` handles "create empty then fill" gracefully,
|
|
549
|
+
parent directories auto-create, provider warm-up is explicit, and the
|
|
550
|
+
router streams prose without `jsonMode` for narrator/conversation
|
|
551
|
+
paths. The result is that a small model will often tell you it can't
|
|
552
|
+
finish a task; it will rarely write the wrong code into a file.
|
|
553
|
+
|
|
554
|
+
If in doubt: configure a code specialist for the `code` role, keep
|
|
555
|
+
something lighter for `fast`, and set `ANTHROPIC_API_KEY` or
|
|
556
|
+
`OPENAI_API_KEY` as a fallback — the router uses the hosted provider
|
|
557
|
+
automatically when the local one fails or trips its circuit breaker.
|
|
558
|
+
|
|
559
|
+
```bash
|
|
560
|
+
forge config set models.code deepseek-coder:6.7b
|
|
561
|
+
forge config set models.planner qwen2.5:7b
|
|
562
|
+
forge config set models.fast phi3:mini
|
|
563
|
+
export ANTHROPIC_API_KEY=sk-… # optional fallback
|
|
564
|
+
```
|
|
565
|
+
|
|
501
566
|
---
|
|
502
567
|
|
|
503
568
|
## Safety model (not optional)
|
|
@@ -569,6 +634,8 @@ Each mode is an **enforceable budget** — not a hint to the model. See
|
|
|
569
634
|
|
|
570
635
|
## CLI reference
|
|
571
636
|
|
|
637
|
+
> **▶ See each surface in action** in [DEMO.md](DEMO.md) — REPL walkthrough, `forge run` one-shots, and the web dashboard.
|
|
638
|
+
|
|
572
639
|
24 subcommands. Full surface:
|
|
573
640
|
|
|
574
641
|
```
|
|
@@ -580,7 +647,7 @@ forge execute "<prompt>" # auto-approve + execute
|
|
|
580
647
|
forge resume [taskId] # resume any prior task (any status)
|
|
581
648
|
forge status # runtime state
|
|
582
649
|
forge doctor # health check + role→model mapping
|
|
583
|
-
forge task list|search
|
|
650
|
+
forge task list|search|delete # task history (SQLite-indexed); delete prompts (or -y)
|
|
584
651
|
forge session list|replay <id> # session JSONL inspection
|
|
585
652
|
forge model list # probe all providers
|
|
586
653
|
forge config get|set|path # configuration
|
|
@@ -594,7 +661,7 @@ forge cost # USD spend ledger
|
|
|
594
661
|
forge ui start # local dashboard at :7823
|
|
595
662
|
forge bundle {pack|unpack} # offline bundles
|
|
596
663
|
forge container up|down # compose wrapper
|
|
597
|
-
forge update [--check|--force] # self-update
|
|
664
|
+
forge update [--check|--force] # self-update (REPL also checks on start, cache-gated)
|
|
598
665
|
forge migrate # DB migrations
|
|
599
666
|
forge changelog # local changelog view
|
|
600
667
|
forge dev # dev helpers
|
|
@@ -699,6 +766,8 @@ API key auth. Tokens stored in the OS keychain.
|
|
|
699
766
|
Single hardened image (non-root, HEALTHCHECK, OCI labels, ~355 MB) that
|
|
700
767
|
serves both CLI and UI.
|
|
701
768
|
|
|
769
|
+
> [▶ Dashboard demo](images/UI.mp4) — `forge ui start` driving a full task end-to-end (plan approval, streamed model output, follow-up thread). More in [DEMO.md](DEMO.md).
|
|
770
|
+
|
|
702
771
|
```bash
|
|
703
772
|
# Pull (multi-arch: linux/amd64 + linux/arm64):
|
|
704
773
|
docker pull ghcr.io/hoangsonw/forge-agentic-coding-cli:latest
|
|
@@ -779,6 +848,9 @@ Workflows: [`.github/workflows/ci.yml`](.github/workflows/ci.yml),
|
|
|
779
848
|
[`.github/workflows/release.yml`](.github/workflows/release.yml),
|
|
780
849
|
[`.github/workflows/nightly.yml`](.github/workflows/nightly.yml).
|
|
781
850
|
|
|
851
|
+
Full versioning & release playbook (SemVer policy, channels, signing,
|
|
852
|
+
hotfix flow, rollback, built-in updater): **[`RELEASES.md`](RELEASES.md)**.
|
|
853
|
+
|
|
782
854
|
---
|
|
783
855
|
|
|
784
856
|
## Architecture map
|
|
@@ -858,10 +930,10 @@ xychart-beta
|
|
|
858
930
|
## Development
|
|
859
931
|
|
|
860
932
|
```bash
|
|
861
|
-
git clone https://github.com/
|
|
933
|
+
git clone https://github.com/hoangsonww/Forge-Agentic-Coding-CLI && cd forge
|
|
862
934
|
npm install
|
|
863
935
|
npm run build # tsc + copy-assets
|
|
864
|
-
npm test #
|
|
936
|
+
npm test # 548 tests across 97 files; all must pass
|
|
865
937
|
./bin/forge.js doctor
|
|
866
938
|
```
|
|
867
939
|
|
package/bin/README.md
ADDED
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
# `bin/`
|
|
2
|
+
|
|
3
|
+
The thin shim that becomes the `forge` command on `$PATH` when you
|
|
4
|
+
install the npm package.
|
|
5
|
+
|
|
6
|
+
## What's here
|
|
7
|
+
|
|
8
|
+
```
|
|
9
|
+
bin/
|
|
10
|
+
├── README.md ← you are here
|
|
11
|
+
└── forge.js ← the only file that matters; ~30 lines
|
|
12
|
+
```
|
|
13
|
+
|
|
14
|
+
`bin/forge.js` is a Node shebang script. It does one thing: locate the
|
|
15
|
+
compiled CLI (or fall back to `ts-node` for dev) and forward `argv`.
|
|
16
|
+
|
|
17
|
+
## How `forge` becomes a command
|
|
18
|
+
|
|
19
|
+
`package.json` declares the binary:
|
|
20
|
+
|
|
21
|
+
```jsonc
|
|
22
|
+
"bin": {
|
|
23
|
+
"forge": "bin/forge.js"
|
|
24
|
+
}
|
|
25
|
+
```
|
|
26
|
+
|
|
27
|
+
When you `npm install -g @hoangsonw/forge`, npm:
|
|
28
|
+
1. Reads the `bin` field.
|
|
29
|
+
2. Creates a symlink named `forge` in your global `$PATH` (e.g.
|
|
30
|
+
`/usr/local/bin/forge` or `~/.npm-global/bin/forge`).
|
|
31
|
+
3. Points it at the installed copy of `bin/forge.js`.
|
|
32
|
+
|
|
33
|
+
From then on, typing `forge` on the shell runs this shim, which loads
|
|
34
|
+
the compiled CLI from `dist/`.
|
|
35
|
+
|
|
36
|
+
## Resolution path at runtime
|
|
37
|
+
|
|
38
|
+
```mermaid
|
|
39
|
+
flowchart TD
|
|
40
|
+
classDef step fill:#1e1b4b,stroke:#a78bfa,color:#ede9fe,rx:4,ry:4
|
|
41
|
+
classDef ok fill:#14532d,stroke:#86efac,color:#dcfce7,rx:4,ry:4
|
|
42
|
+
classDef fail fill:#7f1d1d,stroke:#fca5a5,color:#fee2e2,rx:4,ry:4
|
|
43
|
+
|
|
44
|
+
START["forge <args>"]:::step
|
|
45
|
+
START --> Q{"exists ../dist/cli/index.js?"}:::step
|
|
46
|
+
Q -->|yes — installed| D["require('dist/cli/index.js')<br/>normal path"]:::ok
|
|
47
|
+
Q -->|no — dev checkout| T["try require('ts-node/register')<br/>+ require('src/cli/index.ts')"]:::step
|
|
48
|
+
T -->|ts-node present| TOK["runs via ts-node"]:::ok
|
|
49
|
+
T -->|not installed| ERR["print helpful error, exit 1<br/>→ 'run npm run build'"]:::fail
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
Why both paths?
|
|
53
|
+
|
|
54
|
+
- **Installed (`dist/` exists)**: fast cold start (~170 ms for
|
|
55
|
+
`forge doctor`), no ts-node overhead, no TypeScript dependency.
|
|
56
|
+
- **Dev (`dist/` missing)**: lets contributors iterate on `src/*.ts`
|
|
57
|
+
without running `npm run build` between every change.
|
|
58
|
+
|
|
59
|
+
## Invocation styles
|
|
60
|
+
|
|
61
|
+
Three ways to run Forge locally during dev:
|
|
62
|
+
|
|
63
|
+
| Command | When to use |
|
|
64
|
+
|---|---|
|
|
65
|
+
| `forge ...` | You installed globally (`npm i -g` or `npm link`). Normal user experience. |
|
|
66
|
+
| `./bin/forge.js ...` | From inside a repo checkout. No install needed; uses the shim directly. |
|
|
67
|
+
| `node bin/forge.js ...` | Same as above, explicit. Useful for shell aliases that need `node` flags (e.g., `--inspect`). |
|
|
68
|
+
|
|
69
|
+
All three resolve to the same entry point. Pick whatever is ergonomic.
|
|
70
|
+
|
|
71
|
+
## Dev loop cheat sheet
|
|
72
|
+
|
|
73
|
+
```bash
|
|
74
|
+
# Compile once, then use the installed binary.
|
|
75
|
+
npm run build && forge doctor
|
|
76
|
+
|
|
77
|
+
# Dev fallback — skip the build; ts-node compiles on the fly.
|
|
78
|
+
./bin/forge.js doctor
|
|
79
|
+
|
|
80
|
+
# Debug with the Node inspector.
|
|
81
|
+
node --inspect-brk bin/forge.js run "hello"
|
|
82
|
+
|
|
83
|
+
# Re-link after a clean:
|
|
84
|
+
npm run relink # unlinks, builds, links
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
## Node version
|
|
88
|
+
|
|
89
|
+
The shim only requires a working `node` on `$PATH`. Forge itself needs
|
|
90
|
+
**Node 20+** (`engines.node` in `package.json`). If an older Node is
|
|
91
|
+
first on `$PATH`, the CLI exits early with a version check message —
|
|
92
|
+
not the shim's responsibility.
|
|
93
|
+
|
|
94
|
+
## Platform notes
|
|
95
|
+
|
|
96
|
+
- **Unix (macOS / Linux)**: shebang works directly; the file has the
|
|
97
|
+
executable bit set (`chmod +x bin/forge.js`).
|
|
98
|
+
- **Windows**: npm creates a `.cmd` wrapper alongside the `forge`
|
|
99
|
+
symlink when installing globally. If you run
|
|
100
|
+
`node bin/forge.js ...` on Windows, it works identically; the shim
|
|
101
|
+
doesn't touch paths as strings.
|
|
102
|
+
|
|
103
|
+
## Troubleshooting
|
|
104
|
+
|
|
105
|
+
| Symptom | Likely cause | Fix |
|
|
106
|
+
|---|---|---|
|
|
107
|
+
| `forge: command not found` | Global bin dir not on `$PATH`. | `npm bin -g` → add that dir to `$PATH`. |
|
|
108
|
+
| `Cannot find module '.../dist/cli/index.js'` | Fresh clone, no build yet. | `npm run build` or install `ts-node`. |
|
|
109
|
+
| `Compiled output not found and ts-node is unavailable.` | Dev fallback exhausted. | The shim's own error — run the build. |
|
|
110
|
+
| Changes to `src/*.ts` don't take effect | You're running the compiled `dist/`, which is stale. | `npm run build` (or use `./bin/forge.js` to force the ts-node path). |
|
|
111
|
+
| `forge` runs an old version after upgrade | Old symlink on `$PATH` ahead of the new one. | `which -a forge` → remove / replace the stale entry. |
|
|
112
|
+
|
|
113
|
+
## Scope
|
|
114
|
+
|
|
115
|
+
**This directory is stable.** The shim contract — "find the CLI, forward
|
|
116
|
+
argv, fail helpfully" — hasn't changed and isn't expected to. If you're
|
|
117
|
+
looking for the actual CLI implementation, it lives in
|
|
118
|
+
[`src/cli/`](../src/cli/); the compiled output ends up in `dist/cli/`.
|
package/bin/forge.js
CHANGED
|
@@ -1,3 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Architect agent — produces a system-level design document (not a plan).
|
|
3
|
+
* Use this explicitly via `--mode architect` when the task is "how should we
|
|
4
|
+
* structure X". No file edits; the output is prose/diagram text the user
|
|
5
|
+
* can decide to feed back in as an approved plan seed.
|
|
6
|
+
*
|
|
7
|
+
* @author Son Nguyen <hoangson091104@gmail.com>
|
|
8
|
+
*/
|
|
1
9
|
import { Agent } from './base';
|
|
2
10
|
export interface ArchitectureOutput {
|
|
3
11
|
goal: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"architect.d.ts","sourceRoot":"","sources":["../../src/agents/architect.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAe,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"architect.d.ts","sourceRoot":"","sources":["../../src/agents/architect.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,KAAK,EAAe,MAAM,QAAQ,CAAC;AAwB5C,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,cAAc,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;IACpF,SAAS,EAAE,KAAK,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,EAAE,CAAC;QAAC,IAAI,EAAE,MAAM,EAAE,CAAA;KAAE,CAAC,CAAC;IACrE,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,aAAa,EAAE,MAAM,EAAE,CAAC;CACzB;AAWD,eAAO,MAAM,cAAc,EAAE,KAiC5B,CAAC"}
|
package/dist/agents/architect.js
CHANGED
|
@@ -1,4 +1,12 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Architect agent — produces a system-level design document (not a plan).
|
|
4
|
+
* Use this explicitly via `--mode architect` when the task is "how should we
|
|
5
|
+
* structure X". No file edits; the output is prose/diagram text the user
|
|
6
|
+
* can decide to feed back in as an approved plan seed.
|
|
7
|
+
*
|
|
8
|
+
* @author Son Nguyen <hoangson091104@gmail.com>
|
|
9
|
+
*/
|
|
2
10
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
11
|
exports.architectAgent = void 0;
|
|
4
12
|
const router_1 = require("../models/router");
|
|
@@ -6,12 +14,6 @@ const assembler_1 = require("../prompts/assembler");
|
|
|
6
14
|
const loader_1 = require("../config/loader");
|
|
7
15
|
const retrieval_1 = require("../memory/retrieval");
|
|
8
16
|
const logger_1 = require("../logging/logger");
|
|
9
|
-
/**
|
|
10
|
-
* Architect agent — produces a system-level design document (not a plan).
|
|
11
|
-
* Use this explicitly via `--mode architect` when the task is "how should we
|
|
12
|
-
* structure X". No file edits; the output is prose/diagram text the user
|
|
13
|
-
* can decide to feed back in as an approved plan seed.
|
|
14
|
-
*/
|
|
15
17
|
const architectSchema = `You are an Architect. You do NOT modify files — you only produce a design document.
|
|
16
18
|
|
|
17
19
|
Output STRICT JSON:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"architect.js","sourceRoot":"","sources":["../../src/agents/architect.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"architect.js","sourceRoot":"","sources":["../../src/agents/architect.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AAGH,6CAA6C;AAC7C,oDAA0D;AAC1D,6CAAmF;AACnF,mDAA+C;AAC/C,8CAAwC;AAExC,MAAM,eAAe,GAAG;;;;;;;;;;;;;;;EAetB,CAAC;AAYH,MAAM,KAAK,GAAG,CAAC,OAAe,EAA6B,EAAE;IAC3D,MAAM,KAAK,GAAG,kCAAkC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IAC/D,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAuB,CAAC;IACtE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC,CAAC;AAEW,QAAA,cAAc,GAAU;IACnC,IAAI,EAAE,WAAW;IACjB,WAAW,EAAE,wDAAwD;IACrE,KAAK,CAAC,GAAG,CAAC,GAAG;QACX,MAAM,SAAS,GAAG,IAAA,oBAAQ,EAAC;YACzB,WAAW,EAAE,GAAG,CAAC,WAAW;YAC5B,KAAK,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,GAAG,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,EAAE;YACzD,WAAW,EAAE,EAAE;YACf,YAAY,EAAE,EAAE;SACjB,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,IAAA,8BAAkB,EAAC;YAChC,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,KAAK,EAAE,cAAc,GAAG,CAAC,IAAI,CAAC,KAAK,EAAE;YACrC,WAAW,EAAE,GAAG,CAAC,IAAI,CAAC,WAAW;YACjC,kBAAkB,EAAE,IAAA,+BAAsB,GAAE;YAC5C,mBAAmB,EAAE,IAAA,gCAAuB,EAAC,GAAG,CAAC,WAAW,CAAC;YAC7D,aAAa,EAAE,SAAS,CAAC,MAAM;YAC/B,kBAAkB,EAAE,GAAG,eAAe,iBAAiB,GAAG,CAAC,IAAI,CAAC,KAAK,KAAK,GAAG,CAAC,IAAI,CAAC,WAAW,IAAI,EAAE,EAAE;SACvG,CAAC,CAAC;QACH,IAAI,CAAC;YACH,MAAM,EAAE,QAAQ,EAAE,GAAG,MAAM,IAAA,kBAAS,EAAC,WAAW,EAAE,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,QAAQ,EAAE;gBAC3E,QAAQ,EAAE,IAAI;gBACd,WAAW,EAAE,GAAG;gBAChB,SAAS,EAAE,IAAI;gBACf,SAAS,EAAE,MAAM;aAClB,CAAC,CAAC;YACH,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YACvC,OAAO,EAAE,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,IAAI,EAAE,GAAG,EAAE,QAAQ,CAAC,OAAO,EAAE,EAAE,MAAM,EAAE,CAAC;QAC3F,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,YAAG,CAAC,IAAI,CAAC,kBAAkB,EAAE,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACnD,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;QAClD,CAAC;IACH,CAAC;CACF,CAAC"}
|
package/dist/agents/base.d.ts
CHANGED
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* This file defines the base interfaces for agents in the system. An agent is a component that can execute tasks based on a given context. The Agent interface specifies the structure that all agents must follow, including a name, description, and a run method that takes an execution context and returns a result.
|
|
3
|
+
*
|
|
4
|
+
* @author Son Nguyen <hoangson091104@gmail.com>
|
|
5
|
+
*/
|
|
1
6
|
import { Mode, Task } from '../types';
|
|
2
7
|
import { AssembledPrompt } from '../types';
|
|
3
8
|
export interface AgentExecutionContext {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/agents/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,IAAI,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,IAAI,CAAC;CACZ;AAED,MAAM,WAAW,KAAK;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,GAAG,CAAC,GAAG,EAAE,qBAAqB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;CACvD;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB"}
|
|
1
|
+
{"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../src/agents/base.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,UAAU,CAAC;AACtC,OAAO,EAAE,eAAe,EAAE,MAAM,UAAU,CAAC;AAE3C,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,IAAI,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,IAAI,CAAC;CACZ;AAED,MAAM,WAAW,KAAK;IACpB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,GAAG,CAAC,GAAG,EAAE,qBAAqB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;CACvD;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;CACzB"}
|
package/dist/agents/base.js
CHANGED
|
@@ -1,3 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* This file defines the base interfaces for agents in the system. An agent is a component that can execute tasks based on a given context. The Agent interface specifies the structure that all agents must follow, including a name, description, and a run method that takes an execution context and returns a result.
|
|
4
|
+
*
|
|
5
|
+
* @author Son Nguyen <hoangson091104@gmail.com>
|
|
6
|
+
*/
|
|
2
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
8
|
//# sourceMappingURL=base.js.map
|
package/dist/agents/base.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/agents/base.ts"],"names":[],"mappings":""}
|
|
1
|
+
{"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/agents/base.ts"],"names":[],"mappings":";AAAA;;;;GAIG"}
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Debugger agent — performs root-cause analysis on failures. Use this when you have a failure message and want to understand why it happened and how to fix it. The output includes the most likely root cause, a list of hypotheses, a suggested fix, and a confidence level.
|
|
3
|
+
*
|
|
4
|
+
* @author Son Nguyen <hoangson091104@gmail.com>
|
|
5
|
+
*/
|
|
1
6
|
import { Agent } from './base';
|
|
2
7
|
export interface DebugDiagnosis {
|
|
3
8
|
rootCause: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"debugger.d.ts","sourceRoot":"","sources":["../../src/agents/debugger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAe,MAAM,QAAQ,CAAC;AAM5C,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB;AA0BD,MAAM,WAAW,aAAa;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,eAAO,MAAM,QAAQ,GACnB,OAAO,aAAa,EACpB,MAAM,OAAO,UAAU,EAAE,IAAI,KAC5B,OAAO,CAAC,cAAc,CAuDxB,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,KAM3B,CAAC"}
|
|
1
|
+
{"version":3,"file":"debugger.d.ts","sourceRoot":"","sources":["../../src/agents/debugger.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,EAAe,MAAM,QAAQ,CAAC;AAM5C,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;CACpB;AA0BD,MAAM,WAAW,aAAa;IAC5B,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,eAAO,MAAM,QAAQ,GACnB,OAAO,aAAa,EACpB,MAAM,OAAO,UAAU,EAAE,IAAI,KAC5B,OAAO,CAAC,cAAc,CAuDxB,CAAC;AAEF,eAAO,MAAM,aAAa,EAAE,KAM3B,CAAC"}
|
package/dist/agents/debugger.js
CHANGED
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Debugger agent — performs root-cause analysis on failures. Use this when you have a failure message and want to understand why it happened and how to fix it. The output includes the most likely root cause, a list of hypotheses, a suggested fix, and a confidence level.
|
|
4
|
+
*
|
|
5
|
+
* @author Son Nguyen <hoangson091104@gmail.com>
|
|
6
|
+
*/
|
|
2
7
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
8
|
exports.debuggerAgent = exports.diagnose = void 0;
|
|
4
9
|
const router_1 = require("../models/router");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"debugger.js","sourceRoot":"","sources":["../../src/agents/debugger.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"debugger.js","sourceRoot":"","sources":["../../src/agents/debugger.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Executor agent — executes a single plan step via iterative tool use. This is the core of the system's ability to carry out complex, multi-step plans that require reasoning and adaptation. The agent receives a step description and a catalog of tools, and can call tools in a loop until it determines the step is complete. The output includes a summary of what was done, the results of each tool call, and any files changed.
|
|
3
|
+
*
|
|
4
|
+
* @author Son Nguyen <hoangson091104@gmail.com>
|
|
5
|
+
*/
|
|
1
6
|
import { Agent } from './base';
|
|
2
7
|
import { PlanStep, ToolResult } from '../types';
|
|
3
8
|
import { PermissionFlags } from '../permissions/manager';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../src/agents/executor.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAe,MAAM,QAAQ,CAAC;AAC5C,OAAO,EAAgB,QAAQ,EAAe,UAAU,EAAE,MAAM,UAAU,CAAC;AAK3E,OAAO,EAAqB,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAO5E,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,QAAQ,CAAC;IACf,WAAW,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,CAAA;KAAE,CAAC,CAAC;IACjF,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,iEAAiE;IACjE,KAAK,EAAE,MAAM,CAAC;IACd,uDAAuD;IACvD,SAAS,EAAE,OAAO,CAAC;CACpB;
|
|
1
|
+
{"version":3,"file":"executor.d.ts","sourceRoot":"","sources":["../../src/agents/executor.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,EAAe,MAAM,QAAQ,CAAC;AAC5C,OAAO,EAAgB,QAAQ,EAAe,UAAU,EAAE,MAAM,UAAU,CAAC;AAK3E,OAAO,EAAqB,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAO5E,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,QAAQ,CAAC;IACf,WAAW,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,CAAC;QAAC,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,CAAA;KAAE,CAAC,CAAC;IACjF,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,iEAAiE;IACjE,KAAK,EAAE,MAAM,CAAC;IACd,uDAAuD;IACvD,SAAS,EAAE,OAAO,CAAC;CACpB;AA0GD,eAAO,MAAM,aAAa,EAAE,KAS3B,CAAC;AAEF,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,QAAQ,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,OAAO,UAAU,EAAE,IAAI,CAAC;IAC9B,KAAK,EAAE,eAAe,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,qCAAqC;IACrC,QAAQ,CAAC,EAAE,CAAC,WAAW,EAAE,MAAM,KAAK,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,GAAG,EAAE,MAAM,EAAE,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC/F;AAED,eAAO,MAAM,OAAO,GAAU,QAAQ,aAAa,KAAG,OAAO,CAAC,kBAAkB,CA2R/E,CAAC;AAmDF,eAAO,MAAM,2BAA2B,YAza7B,MAAM,KACd;IACD,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC,CAAC;IAChE,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;CAqa2C,CAAC;AAC5D,eAAO,MAAM,wBAAwB,UA5YJ;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,OAAO,CAAC;IACd,MAAM,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC;CAC7B,KAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAwY8B,CAAC"}
|