Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
29 commits
Select commit Hold shift + click to select a range
c730001
docs: add Open SWE feature adoption roadmap spec
Enreign Mar 20, 2026
a2d017c
docs: fix spec inaccuracies from reviewer pass
Enreign Mar 20, 2026
dfbca64
docs: add 5 implementation plans for Open SWE feature adoption
Enreign Mar 20, 2026
d451dde
feat(middleware): add SparkMiddleware trait and ActivityLogFlushMiddl…
Enreign Mar 20, 2026
0f50653
feat(middleware): add middleware field to Executor, wire after_spark_…
Enreign Mar 20, 2026
0638057
feat(middleware): call invoke_before_model_call in strategy loops
Enreign Mar 20, 2026
373f7d0
feat(middleware): hook before_model_call on step-limit escape LLM cal…
Enreign Mar 20, 2026
116cf41
feat(middleware): register ActivityLogFlushMiddleware from Manager::n…
Enreign Mar 20, 2026
c09a9c9
feat(ticket-intake): add TicketContext and fetch_full_context trait m…
Enreign Mar 20, 2026
7b7c380
feat(ticket-intake): implement fetch_full_context for GitHubProvider
Enreign Mar 20, 2026
dcc4f72
feat(ticket-intake): implement fetch_full_context for LinearProvider
Enreign Mar 20, 2026
5b77b52
feat(ticket-intake): wire inject_full_context config flag into pollin…
Enreign Mar 20, 2026
8a9be97
docs: add rich context injection config fields to config.example.toml
Enreign Mar 20, 2026
efaaa5f
feat(inject): add inject queue and active session tracking to Executor
Enreign Mar 20, 2026
697a63a
feat(inject): add CoreHandle::inject() and is_session_active()
Enreign Mar 20, 2026
947b2c8
feat(inject): drain inject queue before each LLM call in strategy loops
Enreign Mar 20, 2026
ac690fd
feat(inject): route mid-run messages to inject queue in frontends
Enreign Mar 20, 2026
2d30b49
feat(inject): add max_queued_messages config; wire into Executor
Enreign Mar 20, 2026
c932e85
feat(profiles): add ToolProfiles config type and GhostConfig.profile …
Enreign Mar 20, 2026
a35b2fd
feat(profiles): resolve tool profile references during ghost loading
Enreign Mar 20, 2026
a2b1b6d
feat(profiles): validate tool profile references and tool registratio…
Enreign Mar 20, 2026
ff5f99c
docs: add tool_profiles example to config.example.toml
Enreign Mar 20, 2026
3d57ecd
feat(todo): add TodoList state type
Enreign Mar 20, 2026
6845a5b
feat(todo): add spark_todos migration and save helper to db.rs
Enreign Mar 20, 2026
1a32074
feat(todo): add per-session TodoList to Executor with accessors
Enreign Mar 20, 2026
e018aa4
feat(todo): implement Tool trait for TodoWriteTool/TodoCheckTool; reg…
Enreign Mar 20, 2026
0b4ccc3
feat(todo): surface todo list in /session command on Slack and Telegram
Enreign Mar 20, 2026
9855ebe
feat(todo): persist todo list to observer log on session close
Enreign Mar 20, 2026
f68746a
fix: downscope executor fields to pub(crate); use floor_char_boundary…
Enreign Mar 20, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
17 changes: 17 additions & 0 deletions config.example.toml
Original file line number Diff line number Diff line change
Expand Up @@ -110,6 +110,8 @@ max_steps = 15
# max_steps = 30
# Sensitive patterns have comprehensive defaults — uncomment to override:
# sensitive_patterns = ["rm\\s", "sudo", "curl.*\\|.*sh", "chmod.*777"]
# Max messages queued per session for mid-run injection (default: 5).
# max_queued_messages = 5

[manager.loop_guard]
# Detect repeated identical tool calls and break loops early.
Expand Down Expand Up @@ -150,6 +152,15 @@ discovery_ttl_secs = 60
[persona]
# soul_file = "~/.sparks/souls/sparks.md"

# Named tool profiles — reference from a ghost with profile = "name"
# All tools in a profile must be registered (built-in or MCP).
# Inline [[ghosts]] tools list takes precedence over profile tools.
#
# [tool_profiles]
# researcher = ["web_search", "file_read", "grep", "memory_search"]
# devops = ["shell", "git", "gh", "docker_exec"]
# reviewer = ["file_read", "grep", "glob", "git"]

# Ghosts are sub-agents that execute tasks inside Docker containers.
# Each ghost can have its own soul file for personality/identity.
# For deterministic CI/local runs, set SPARKS_DISABLE_HOME_PROFILES=1 to ignore ~/.sparks/ghosts overrides.
Expand All @@ -159,6 +170,7 @@ description = "Complex multi-file coding tasks: refactoring, new features, bug f
tools = ["file_read", "file_write", "shell", "git", "gh"]
role = "coder"
strategy = "code"
# profile = "researcher" # use a named tool profile instead of or alongside tools = [...]
# soul_file = "~/.sparks/souls/coder.md"
# skill_file = "~/.sparks/skills/coder.md"
# skill_files = ["~/.sparks/skills/rust-core.md", "~/.sparks/skills/secure-coding.md"]
Expand Down Expand Up @@ -260,6 +272,11 @@ enabled = false
poll_interval_secs = 300
# When true, ticket intake tasks are auto-completed without executing a ghost (useful for CI).
mock_dispatch = false
# Fetch full issue context (comments, PR diff) and inject into task context.
# Increases token usage per task but significantly improves task quality.
# inject_full_context = false
# Maximum characters to inject from rich ticket context (default: 4000).
# rich_context_char_cap = 4000

[ticket_intake.ci_autopilot]
# End-to-end bridge used by ticket intake and feature-contract dispatch:
Expand Down
Loading
Loading