Skip to content
Merged
Show file tree
Hide file tree
Changes from 117 commits
Commits
Show all changes
133 commits
Select commit Hold shift + click to select a range
ddf9e17
fix: Resolve server panic and fix pulldown-cmark compatibility
AlexMikhalev Sep 11, 2025
914cede
fix: Revert Tauri to stable version 1.x
AlexMikhalev Sep 11, 2025
cbf155d
Missing configurations and tests
AlexMikhalev Sep 12, 2025
cce21a4
feat: Add comprehensive AI Agent Evolution System with security and p…
AlexMikhalev Sep 14, 2025
88bd212
WIP: muti-agent systems
AlexMikhalev Sep 14, 2025
cba3777
feat: Add comprehensive AI Agent Evolution System with settings manag…
AlexMikhalev Sep 15, 2025
5c147f8
fix: Resolve all pre-commit check failures
AlexMikhalev Sep 15, 2025
c3b8b78
WIP: muti-agent systems
AlexMikhalev Sep 15, 2025
94e1b66
feat: Complete Multi-Agent System Integration - Production Ready
AlexMikhalev Sep 16, 2025
c31c940
feat: Integrate rig-core 0.14.0 with Ollama support for local testing
AlexMikhalev Sep 16, 2025
1e56ed1
fix: Remove conditional checks for auto-summarization to ensure AI ag…
AlexMikhalev Sep 17, 2025
875533e
WIP: muti-agent systems
AlexMikhalev Sep 19, 2025
24e8ab2
feat(ui): add debug functionality to chat and fix result item menu
Sep 23, 2025
314c6e4
feat: Add comprehensive 1Password integration for enterprise secret m…
Sep 23, 2025
b3637b4
refactor: Remove experimental terraphim_gen_agent crate and fix compi…
AlexMikhalev Sep 23, 2025
06733b1
chore(deps)(deps): bump rollup-plugin-css-only in /desktop
dependabot[bot] Sep 30, 2025
83d0f09
fix: clean up trailing whitespace and formatting issues
Oct 1, 2025
26a65af
fix: resolve 2-routing workflow JavaScript progression bug
AlexMikhalev Oct 1, 2025
ae8bee6
feat: implement weighted haystack ranking with source tracking
Oct 1, 2025
c94367d
Merge branch 'main' into weighted_haystack
AlexMikhalev Oct 2, 2025
dafeb41
test: verify all workflow examples use real LLM models
AlexMikhalev Oct 5, 2025
d7e4010
feat: implement KG duplicate processing prevention with HashMap tracking
Oct 5, 2025
04bf6fe
feat: history of chat
Oct 6, 2025
2d5a20d
feat: Enable OpenRouter by default and fix Axum 0.8 route syntax
Oct 6, 2025
d2f9ed5
fix: remove non-existent haystack workspace members
Oct 6, 2025
7748fc6
Merge branch 'weighted_haystack' into chat_history
AlexMikhalev Oct 6, 2025
4092060
refactor: remove cargo fix from deployment script
AlexMikhalev Oct 6, 2025
42bf0dd
fix: add --delete flag to rsync for proper file synchronization
AlexMikhalev Oct 6, 2025
5e47501
feat: update deployment paths to terraphim-private-cloud-new
AlexMikhalev Oct 6, 2025
b99f200
fix: pin wiremock to 0.6.4 to avoid nightly Rust features
Oct 6, 2025
50f88fd
ci: add GTK dependencies to lint-and-format job
Oct 6, 2025
215093a
fix: ensure dist folder exists for RustEmbed in CI
Oct 6, 2025
2dcefb3
feat: add VM execution integration for agent system
AlexMikhalev Oct 6, 2025
0d83dca
feat: implement Replace CLI command with knowledge graph integration
Oct 6, 2025
26bb3c4
fix(ci): add libsoup2.4-dev dependency for webkit2gtk builds
Oct 6, 2025
2131652
fix(ci): add libjavascriptcoregtk-4.1-dev dependency for webkit builds
Oct 6, 2025
e65dcdc
Merge pull request #179 from terraphim/chat_history
AlexMikhalev Oct 6, 2025
a37738e
Merge branch 'main' into weighted_haystack
AlexMikhalev Oct 6, 2025
c450d3d
fix(ci): use webkit2gtk 4.0 instead of 4.1 for Rust compatibility
Oct 6, 2025
a839715
fix(ci): use ubuntu-20.04 for webkit 4.0 package availability
Oct 6, 2025
96c6208
fix: resolve clippy warnings in supervisor and messaging tests
AlexMikhalev Oct 6, 2025
76ae6af
fix(ci): revert to ubuntu-latest with dual webkit support
Oct 7, 2025
787951b
fix(ci): use webkit 4.1 with pkg-config symlink for 4.0 compat
Oct 7, 2025
5b02fbb
fix: update workflow role mappings to match configured roles
AlexMikhalev Oct 7, 2025
f817cc2
feat: add VM execution demo workflow with LLM code generation
AlexMikhalev Oct 7, 2025
030d81a
chore(deps)(deps-dev): bump @playwright/test in /desktop
dependabot[bot] Oct 7, 2025
7cbec12
fix(ci): add webkit2gtk-4.0.pc symlink for webkit2gtk-sys
Oct 7, 2025
2c37dc6
ci: trigger rebuild to verify webkit and compilation fixes
Oct 7, 2025
6a3e3e8
feat(automata): add PlainText variant to LinkType enum
Oct 7, 2025
44f658b
fix(ci): make lint-and-format depend on build-frontend
Oct 7, 2025
d84c94d
fix(tui): remove obsolete mismatched_lifetime_syntaxes lint
Oct 7, 2025
bee3014
fix(desktop): correct LICENSE file path for .deb packaging
Oct 7, 2025
0876525
feat: add custom system prompt support for VM execution workflow
AlexMikhalev Oct 7, 2025
53b68c3
fix: resolve all clippy warnings across workspace
AlexMikhalev Oct 7, 2025
ed67249
fix(deb): correct LICENSE file paths in all .deb package metadata
Oct 7, 2025
1b889ed
security: fix LLM prompt injection and eliminate unsafe memory operat…
AlexMikhalev Oct 7, 2025
ffa7419
fix(ci): add webkit symlinks to test-suite job
Oct 7, 2025
c916101
test: add Phase 1 critical security test coverage
AlexMikhalev Oct 7, 2025
1df4054
fix(ci): add webkit library symlinks for linker compatibility
Oct 7, 2025
005174e
test: add Phase 2 comprehensive security test coverage
AlexMikhalev Oct 7, 2025
9d5482a
fix: add openrouter feature flag to resolve clippy warnings
AlexMikhalev Oct 7, 2025
65af0da
fix: make DeviceSettings::new() resilient to missing config file
Oct 7, 2025
bc580ef
fix: resolve clippy warnings and test compilation errors
AlexMikhalev Oct 7, 2025
dbad44d
test: mark network test as ignored for CI
Oct 7, 2025
c8db14b
fix: make test fixture path resolution robust for different cwd
Oct 7, 2025
b7b78bb
style: apply cargo fmt to test fixture path code
Oct 7, 2025
7cc9629
fix(content): improve error handling and UI updates
Oct 8, 2025
d29fbde
docs: update CI status and chat session history specs
Oct 8, 2025
58258ee
test: add chat layout responsive and visual tests
Oct 8, 2025
9e663fb
fix(ci): use Node 20.19.5 for Playwright compatibility
Oct 8, 2025
7c945cf
fix(ci): copy desktop dist for Tauri clippy check
Oct 8, 2025
444cdbe
fix(ci): add libclang for RocksDB build
Oct 8, 2025
debf913
fix(ci): copy frontend dist to terraphim_server for build
Oct 8, 2025
cd754f1
fix(tests): update rolegraph test expectations
Oct 8, 2025
be5b30e
Fix syntax errors and clippy warnings
Oct 8, 2025
65b6aed
Apply formatting fixes to working files
Oct 8, 2025
22db128
Update Cargo.toml files and source code
Oct 8, 2025
72ee01e
Update frontend, documentation, and remaining files
Oct 8, 2025
1f7a4a6
Fix trailing whitespace and end-of-file issues
Oct 8, 2025
1eccff1
feat: add diagnostic logging for LLM client initialization in TruthForge
AlexMikhalev Oct 8, 2025
1c2345b
fix: resolve syntax errors and missing fields in test files
Oct 8, 2025
1bf49b6
chore: remove empty test files causing compilation issues
Oct 8, 2025
642fc49
docs: add comprehensive branch protection documentation
Oct 8, 2025
c1c0182
docs: consolidate TruthForge documentation and organize repository
AlexMikhalev Oct 8, 2025
2aef8e0
feat: add comprehensive debug mode for LLM request/response logging i…
AlexMikhalev Oct 8, 2025
6eed040
"Claude PR Assistant workflow"
AlexMikhalev Oct 9, 2025
aa51231
"Claude Code Review workflow"
AlexMikhalev Oct 9, 2025
afd49c9
fix: truthforge
AlexMikhalev Oct 9, 2025
64b7f5e
Merge PR #183: security test coverage and critical vulnerability fixes
Oct 9, 2025
d82c291
style: apply cargo fmt formatting to omission_detector.rs
AlexMikhalev Oct 9, 2025
e979927
docs: update scratchpad with documentation consolidation session summary
AlexMikhalev Oct 9, 2025
bdbe7dc
docs: add reference to consolidated agent instructions in CLAUDE.md
AlexMikhalev Oct 9, 2025
9ab7e99
Merge PR #180: Replace CLI command with knowledge graph integration
Oct 9, 2025
daeda5e
Merge PR #184: Add Claude Code GitHub Workflow
Oct 9, 2025
84f1749
Merge PR #178: Weighted haystack
Oct 9, 2025
2cfd033
Merge PR #182: bump @playwright/test from 1.55.0 to 1.56.0
Oct 9, 2025
59b5945
Merge PR #173: bump rollup-plugin-css-only from 4.5.2 to 4.5.5
Oct 9, 2025
8c75083
docs: update scratchpad with machine-readable instructions consolidat…
AlexMikhalev Oct 9, 2025
7d74a00
fix: restore Perplexity support and fix LLM API usage
Oct 9, 2025
757ee48
fix: resolve API incompatibilities from PR merges
Oct 9, 2025
28bb4f4
fix: resolve all remaining compilation errors
Oct 9, 2025
30ad63f
refactor: integrate rust-genai v0.3.5 for unified LLM client
AlexMikhalev Oct 9, 2025
4d8064c
fix: resolve test failures and compilation errors post-merge
Oct 10, 2025
8cfb8c5
fix: add missing lru dependency for Tauri desktop app
Oct 10, 2025
1c53d3a
Merge branch 'feature/rust-genai-integration' into feat/merge-all-prs…
Oct 10, 2025
4c2b5a5
fix: resolve Cargo.toml merge conflict in terraphim_middleware
Oct 10, 2025
aac7809
fix: resolve compilation errors and reduce warnings by 38%
Oct 11, 2025
6cd494f
fix: resolve compilation errors and pass pre-commit checks
Oct 12, 2025
8d9653c
fix: resolve critical test failures and type safety issues
AlexMikhalev Oct 14, 2025
a77cfe1
fix: remove stale submodule reference to scratchpad/atomic-server
AlexMikhalev Oct 14, 2025
898b0ab
fix: import theme store to resolve Svelte 5 build error
AlexMikhalev Oct 14, 2025
5215f7d
fix: downgrade Svelte to v4 for CI stability
AlexMikhalev Oct 14, 2025
fc44590
fix: improve frontend build workflow for missing yarn.lock
AlexMikhalev Oct 14, 2025
a53f6f9
fix: generate yarn.lock and fix basic imports for Svelte 4
AlexMikhalev Oct 14, 2025
f626814
fix: add missing imports to Search.svelte
AlexMikhalev Oct 14, 2025
4eb49b2
fix: resolve Svelte component import issues
AlexMikhalev Oct 14, 2025
704364e
fix: resolve variable reference errors in Svelte components
AlexMikhalev Oct 14, 2025
53492d8
fix: resolve remaining Svelte component function reference errors
AlexMikhalev Oct 14, 2025
0f4d052
fix: add missing imports to test files
AlexMikhalev Oct 14, 2025
1c89df0
fix: resolve BackButton function reference and CI test issues
AlexMikhalev Oct 14, 2025
dbff115
fix: resolve remaining component function and prop issues
AlexMikhalev Oct 14, 2025
8d1b8c5
fix: resolve remaining frontend test issues
AlexMikhalev Oct 14, 2025
6956230
fix: resolve final CI build issues
AlexMikhalev Oct 14, 2025
56ea959
fix: resolve final test failures for complete CI pass
AlexMikhalev Oct 14, 2025
490fca6
chore: prepare for v0.2.3 release
AlexMikhalev Oct 14, 2025
1787897
chore: bump version to v0.2.3
AlexMikhalev Oct 14, 2025
20fe1f3
feat: add release infrastructure and packaging scripts
AlexMikhalev Oct 14, 2025
86c4dcf
docs: add release documentation and automation workflows
AlexMikhalev Oct 15, 2025
015cfeb
docs: add installation and deployment guides
AlexMikhalev Oct 15, 2025
973bbd6
feat: add macOS app bundles and platform documentation
AlexMikhalev Oct 15, 2025
b38c76e
feat: add improved multi-architecture Docker support
AlexMikhalev Oct 15, 2025
eb66386
feat: complete v0.2.4 release infrastructure
AlexMikhalev Oct 15, 2025
788857f
feat: add comprehensive release automation scripts
AlexMikhalev Oct 15, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
56 changes: 56 additions & 0 deletions .agents/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
# Custom Agents

Create specialized agent workflows that coordinate multiple AI agents to tackle complex engineering tasks. Instead of a single agent trying to handle everything, you can orchestrate teams of focused specialists that work together.

## Getting Started

1. **Edit an existing agent**: Start with `my-custom-agent.ts` and modify it for your needs
2. **Test your agent**: Run `codebuff --agent your-agent-name`
3. **Publish your agent**: Run `codebuff publish your-agent-name`

## Need Help?

- For detailed documentation, see [agent-guide.md](./agent-guide.md).
- For examples, check the `examples/` directory.
- Join our [Discord community](https://codebuff.com/discord) and ask your questions!

## Context Window Management

### Why Agent Workflows?

Modern software projects are complex ecosystems with thousands of files, multiple frameworks, intricate dependencies, and domain-specific requirements. A single AI agent trying to understand and modify such systems faces fundamental limitations—not just in knowledge, but in the sheer volume of information it can process at once.

### The Solution: Focused Context Windows

Agent workflows elegantly solve this by breaking large tasks into focused sub-problems. When working with large codebases (100k+ lines), each specialist agent receives only the narrow context it needs—a security agent sees only auth code, not UI components—keeping the context for each agent manageable while ensuring comprehensive coverage.

### Why Not Just Mimic Human Roles?

This is about efficient AI context management, not recreating a human department. Simply creating a "frontend-developer" agent misses the point. AI agents don't have human constraints like context-switching or meetings. Their power comes from hyper-specialization, allowing them to process a narrow domain more deeply than a human could, then coordinating seamlessly with other specialists.

## Agent workflows in action

Here's an example of a `git-committer` agent that creates good commit messages:

```typescript
export default {
id: 'git-committer',
displayName: 'Git Committer',
model: 'openai/gpt-5-nano',
toolNames: ['read_files', 'run_terminal_command', 'end_turn'],

instructionsPrompt:
'You create meaningful git commits by analyzing changes, reading relevant files for context, and crafting clear commit messages that explain the "why" behind changes.',

async *handleSteps() {
// Analyze what changed
yield { tool: 'run_terminal_command', command: 'git diff' }
yield { tool: 'run_terminal_command', command: 'git log --oneline -5' }

// Stage files and create commit with good message
yield 'STEP_ALL'
},
}
```

This agent systematically analyzes changes, reads relevant files for context, then creates commits with clear, meaningful messages that explain the "why" behind changes.
17 changes: 17 additions & 0 deletions .agents/examples/01-basic-diff-reviewer.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
import type { AgentDefinition } from '../types/agent-definition'

const definition: AgentDefinition = {
id: 'basic-diff-reviewer',
displayName: 'Basic Diff Reviewer',
model: 'anthropic/claude-4-sonnet-20250522',
toolNames: ['read_files', 'run_terminal_command'],

spawnerPrompt: 'Spawn when you need to review code changes in the git diff',

instructionsPrompt: `Execute the following steps:
1. Run git diff
2. Read the files that have changed
3. Review the changes and suggest improvements`,
}

export default definition
78 changes: 78 additions & 0 deletions .agents/examples/02-intermediate-git-committer.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
import type {
AgentDefinition,
AgentStepContext,
ToolCall,
} from '../types/agent-definition'

const definition: AgentDefinition = {
id: 'git-committer',
displayName: 'Intermediate Git Committer',
model: 'anthropic/claude-4-sonnet-20250522',
toolNames: ['read_files', 'run_terminal_command', 'add_message', 'end_turn'],

inputSchema: {
prompt: {
type: 'string',
description: 'What changes to commit',
},
},

spawnerPrompt:
'Spawn when you need to commit code changes to git with an appropriate commit message',

systemPrompt:
'You are an expert software developer. Your job is to create a git commit with a really good commit message.',

instructionsPrompt:
'Follow the steps to create a good commit: analyze changes with git diff and git log, read relevant files for context, stage appropriate files, analyze changes, and create a commit with proper formatting.',

handleSteps: function* ({ agentState, prompt, params }: AgentStepContext) {
// Step 1: Run git diff and git log to analyze changes.
yield {
toolName: 'run_terminal_command',
input: {
command: 'git diff',
process_type: 'SYNC',
timeout_seconds: 30,
},
} satisfies ToolCall

yield {
toolName: 'run_terminal_command',
input: {
command: 'git log --oneline -10',
process_type: 'SYNC',
timeout_seconds: 30,
},
} satisfies ToolCall

// Step 2: Put words in AI's mouth so it will read files next.
yield {
toolName: 'add_message',
input: {
role: 'assistant',
content:
"I've analyzed the git diff and recent commit history. Now I'll read any relevant files to better understand the context of these changes.",
},
includeToolCall: false,
} satisfies ToolCall

// Step 3: Let AI generate a step to decide which files to read.
yield 'STEP'

// Step 4: Put words in AI's mouth to analyze the changes and create a commit.
yield {
toolName: 'add_message',
input: {
role: 'assistant',
content:
"Now I'll analyze the changes and create a commit with a good commit message.",
},
includeToolCall: false,
} satisfies ToolCall

yield 'STEP_ALL'
},
}

export default definition
73 changes: 73 additions & 0 deletions .agents/examples/03-advanced-file-explorer.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
import type { AgentDefinition, ToolCall } from '../types/agent-definition'

const definition: AgentDefinition = {
id: 'advanced-file-explorer',
displayName: 'Dora the File Explorer',
model: 'openai/gpt-5',

spawnerPrompt:
'Spawns multiple file picker agents in parallel to comprehensively explore the codebase from different perspectives',

includeMessageHistory: false,
toolNames: ['spawn_agents', 'set_output'],
spawnableAgents: [`codebuff/file-picker@0.0.1`],

inputSchema: {
prompt: {
description: 'What you need to accomplish by exploring the codebase',
type: 'string',
},
params: {
type: 'object',
properties: {
prompts: {
description:
'List of 1-4 different parts of the codebase that could be useful to explore',
type: 'array',
items: {
type: 'string',
},
},
},
required: ['prompts'],
additionalProperties: false,
},
},
outputMode: 'structured_output',
outputSchema: {
type: 'object',
properties: {
results: {
type: 'string',
description: 'The results of the file exploration',
},
},
required: ['results'],
additionalProperties: false,
},

handleSteps: function* ({ prompt, params }) {
const prompts: string[] = params?.prompts ?? []
const filePickerPrompts = prompts.map(
(focusPrompt) =>
`Based on the overall goal "${prompt}", find files related to this specific area: ${focusPrompt}`,
),
{ toolResult: spawnResult } = yield {
toolName: 'spawn_agents',
input: {
agents: filePickerPrompts.map((promptText) => ({
agent_type: 'codebuff/file-picker@0.0.1',
prompt: promptText,
})),
},
} satisfies ToolCall
yield {
toolName: 'set_output',
input: {
results: spawnResult,
},
} satisfies ToolCall
},
}

export default definition
43 changes: 43 additions & 0 deletions .agents/my-custom-agent.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
/*
* EDIT ME to create your own agent!
*
* Change any field below, and consult the AgentDefinition type for information on all fields and their purpose.
*
* Run your agent with:
* > codebuff --agent git-committer
*
* Or, run codebuff normally, and use the '@' menu to mention your agent, and codebuff will spawn it for you.
*
* Finally, you can publish your agent with 'codebuff publish your-custom-agent' so users from around the world can run it.
*/

import type { AgentDefinition } from './types/agent-definition'

const definition: AgentDefinition = {
id: 'my-custom-agent',
displayName: 'My Custom Agent',

model: 'anthropic/claude-4-sonnet-20250522',
spawnableAgents: ['file-explorer'],

// Check out .agents/types/tools.ts for more information on the tools you can include.
toolNames: ['run_terminal_command', 'read_files', 'spawn_agents'],

spawnerPrompt: 'Spawn when you need to review code changes in the git diff',

instructionsPrompt: `Review the code changes and suggest improvements.
Execute the following steps:
1. Run git diff
2. Spawn a file explorer to find all relevant files
3. Read any relevant files
4. Review the changes and suggest improvements`,

// Add more fields here to customize your agent further:
// - system prompt
// - input/output schema
// - handleSteps

// Check out the examples in .agents/examples for more ideas!
}

export default definition
Loading
Loading