DvalinCode Architecture

Agentic coding CLI — TypeScript, zero runtime deps, provider-neutral

CLI & COMMANDS (commander.js) dvalincode entry (cli.ts) chat Agent loop ask Local plan run-tool Direct exec init Config scan Workspace tools Registry parseAsync dvalincode chat "refactor the auth module" | dvalincode scan ~/project | dvalincode run-tool list_files -i '{"pattern":"src/**/*.ts"}' AGENT ENGINE AgentLoop 8-state state machine RESTORE→COMPACT→COMMAND→BUILD→RUN→SAVE→RESPOND→DONE AgentRunner Tool-calling loop @tool() + native function_calls delegates ProviderAdapter OpenAI-compatible API DeepSeek · OpenAI · Anthropic chat() ProviderManager ENV → {name, adapter} DVALINCODE_API_KEY etc config Session Store ~/.dvalincode/sessions/*.json Summary Memory Cross-session context TurnConfig maxIterations · token budget TOOL SYSTEM (Zod schemas · typed · permission-gated) ToolRegistry Map<name, Tool> Read Tools list_files read_file · search_text Write Tools write_file edit_file Execute shell run() Core Support DiffPreview Permissions · Workspace ProjectScanner Signals · Depext Root discovery ENVIRONMENT User's workspace dir ~/.dvalincode/sessions/ .dvalincode.json ENV vars Legend CLI/Read Agent Tools/Exec Provider Support

Agent Engine

  • • AgentLoop: 8-state turn-based state machine
  • • AgentRunner: Tool-calling loop with maxIter guard
  • • Session persistence in ~/.dvalincode/sessions/
  • • Cross-session summary memory for context

Provider Layer

  • • ProviderAdapter interface for any LLM API
  • • OpenAI-compatible: function_calling + @tool() text fallback
  • • ProviderManager loads from env vars or config
  • • Works with DeepSeek, OpenAI, Anthropic, etc.

Tool System

  • • 6 registered tools: read/write/execute
  • • Zod-schematized inputs with runtime validation
  • • Permission-gated: read/write/execute access levels
  • • Diff preview on all write_file edits