All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Multi-stage
Dockerfilefor containerized deployment (builder + runner stages). .dockerignoreto minimise Docker build context.npm run build/npm run build:clean/npm run start:prodscripts.- GitHub Actions CI workflow (
.github/workflows/ci.yml): test → build → artifact upload. - Optional npm-publish job (commented out; see instructions in
ci.yml). declaration,declarationMap, andsourceMapcompiler options intsconfig.json.- Package scoped to
@huberp/agentloopwithfiles,main, andtypesfields.
1.0.0 - 2026-03-26
- TypeScript project scaffold with
ts-jestand strict mode enabled. - Mistral LLM integration via
@langchain/mistralai. - Agentic loop (
executeWithTools) with configurableMAX_ITERATIONSguard. InMemoryChatMessageHistoryfor multi-turn conversation state.- Dotenv-backed
appConfiginsrc/config.tsas the single source of runtime config. - Structured logger (
src/logger.ts) backed by Pino with machine-readable JSON output. ToolRegistrywith auto-discovery fromsrc/tools/directory.- Tool permission manager: allowlist / blocklist / auto-approve modes.
- Per-tool concurrency limiter and timeout (
TOOL_TIMEOUT_MS). - Context trimming to stay within
MAX_CONTEXT_TOKENSbefore each LLM call. - LLM retry with exponential back-off (
LLM_RETRY_MAX,LLM_RETRY_BASE_DELAY_MS).
shelltool with configurableSHELL_COMMAND_BLOCKLIST.file-read,file-write,file-list,file-edit,file-deletetools with workspace-root path sandboxing.code-runtool for executing code snippets (Node.js / Python).code-searchtool (ripgrep-backed regex search across the workspace).calculatetool (mathjs-powered safe expression evaluator).diffandpatchtools for structured file diffing and patching.git-status,git-log,git-diff,git-committools viasimple-git.searchtool for workspace-scoped full-text search.- Input sanitisation helpers in
src/tools/sanitize.ts.
- Streaming agent loop (
executeWithToolsStream) usingstreamWithTools. STREAMING_ENABLEDconfig flag.- Invocation tracer (
src/observability.ts) with per-call cost and token accounting. FileTracerwrites structured NDJSON trace files to a configurableTRACE_OUTPUT_DIR.NoopTracerused when tracing is disabled (zero overhead).
- Security-hardening module (
src/security.ts): path traversal prevention, size limits, dangerous-pattern rejection. - Docker sandbox mode for
code-run(SANDBOX_MODE=docker,SANDBOX_DOCKER_IMAGE). - MCP client integration (
src/mcp/): connects to external MCP servers on startup viaMCP_SERVERSJSON config.
PromptRegistrywith file-based template loading, variable substitution, and tag filtering.- Prompt version history persisted to
PROMPT_HISTORY_FILE. - Dynamic prompt context injection (workspace snapshot, active tools, instructions) with TTL cache.
SkillRegistrywith builtin skills and runtimeSKILLS_DIRloading.- Instruction file loader (
.instructions.md,AGENTS.md) viasrc/instructions/loader.ts.
AgentProfileRegistry: YAML/JSON agent profile files with per-profile model, temperature, tool allowlist, and max-iterations overrides.- Builtin agent profiles shipped in
src/agents/builtin/. - Subagent manager, planner, and runner (
src/subagents/). - Coordinator for multi-agent task routing.