Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
554 commits
Select commit Hold shift + click to select a range
855a268
docs: update design.md and examples.md for new orchestrators
Jun 13, 2026
4729c7d
chore: cleanup
Jun 13, 2026
4985e2a
fix(orchestration): fix 9 bugs found in code review of new orchestrators
Jun 13, 2026
1ff50bb
fix(orchestration): use AgentNames.Unknown for missing author
Jun 14, 2026
e8ca62d
feat(git): add git_rebase tool to GitPlugin
Jun 14, 2026
ffcd5e8
feat(keychain): add hidden keychain command for VS Code extension sync
Jun 14, 2026
0cb003f
feat(repl): add --plugins flag to enable optional plugins in REPL
Jun 15, 2026
f487916
feat(plugins): scope folder orientation block to active plugins only
Jun 14, 2026
b67465f
feat(repl): stream chain-of-thought in real time
Jun 15, 2026
68d67e7
fix(repl): replace previous text segment when new one starts
Jun 15, 2026
9dc4eb0
fix(orchestration): hard-stop back-edge loops and guard Developer
Jun 16, 2026
296dc2a
feat(repl): add experimental next-gen REPL entry-point
Jun 16, 2026
819a988
fix(orchestration): recover handoff signals lost in tool-call-only turns
Jun 16, 2026
fcb4f01
fix(orchestration): address three secondary issues from session 9ca65e92
Jun 16, 2026
f2ef93b
fix(orchestration): close lookback, BLOCKED-author, stale-handoff gaps
Jun 16, 2026
b70f1e1
fix(orchestration): restore state machine position on --resume and abort
Jun 18, 2026
0e20ebf
fix(orchestration): correct wrong-signal loops and drop diagnostic log
Jun 18, 2026
773e4ed
fix(repl): replace cursor save/restore with line counting
Jun 18, 2026
81eb6fc
feat(init): add greenfield template and tune DevTeam defaults
Jun 18, 2026
707048d
fix: improve REPL cursor handling for terminal scroll scenarios
Jun 18, 2026
65cd986
refactor(repl): stop printing streamed text live in the terminal
Jun 18, 2026
ac1d25c
fix(display): reflow wrapped list items in markdown renderer
Jun 18, 2026
9be5386
refactor(agents): replace tool-pair window with MAF compaction
Jun 22, 2026
c256f55
feat(orchestration): add cycle-native WorkflowOrchestrator
Jun 22, 2026
3a9a682
fix(cli): recognize workflow/mapreduce/scattergather in validate
Jun 22, 2026
648654e
feat(cli): add ValidateMapReduce/ValidateScatterGather structural checks
Jun 22, 2026
fdf53f4
fix(plugins): split ReconPlugin into narrow, capability-safe writers
Jun 23, 2026
d8ada9a
fix(contracts): close per-test fabrication loophole in TestReport check
Jun 23, 2026
efd7b19
fix(plugins): extend read-only recon pattern to swe and audit templates
Jun 23, 2026
3c45875
fix(templates): lock review/verify-only agents to FileSystem read
Jun 23, 2026
47a86b2
test(plugins): add direct coverage for PluginCapabilityMap
Jun 23, 2026
f1df257
refactor(plugins): unify Recon/Preflight/Audit into one ArtifactPlugin
Jun 23, 2026
e97b93d
fix(templates): lock planning/triage-stage agents to FileSystem read
Jun 23, 2026
db9676c
fix(templates): warn against backgrounding wrappers in verify_command
Jun 24, 2026
653d1d0
fix(templates): block Reviewer from approving on a failed spot-check
Jun 24, 2026
a8e4acf
fix(templates): extend Reviewer verification guard to brownfield
Jun 24, 2026
60cadf3
refactor(repl): fix TrimHistory, token estimation, duplication
Jun 26, 2026
6e661c9
feat(repl): complete REPL events log for session debugging
Jun 26, 2026
3fff613
fix(prompts): use native tool params instead of shell workarounds
Jun 26, 2026
11f8e41
fix(prompts): update stale sub-agent and context guidance in FUSERAFT.md
Jun 26, 2026
72671fb
chore(deps): bump NuGet packages to latest
Jun 26, 2026
659b5ab
fix(execute): preserve inspect-step tool outputs for subsequent steps
Jun 28, 2026
491c4f1
fix(execute): fix stale/missing InspectTools names and inspect trim
Jun 28, 2026
8db26ac
chore(deps): bump YamlDotNet from 18.0.0 to 18.1.0
Jun 28, 2026
cbeec35
fix(context): maxTurnAge cut must land on user message, not assistant
Jun 28, 2026
b365aba
refactor(repl): split ReplCommands into partial class files by concern
Jun 28, 2026
3d4c5e0
refactor(repl): remove unused tool summary helpers
Jun 28, 2026
b6207e3
feat(models): add /models REPL command and fuseraft models CLI command
Jun 28, 2026
fd2326b
docs: adopt MAS terminology throughout
Jun 28, 2026
0f9e329
docs: add fuseraft.ai landing page with hero and feature grid
Jun 28, 2026
76f1015
style(docs): align landing page colors to fuseraft.com palette
Jun 28, 2026
1cf5add
style(docs): recolor logo to fuseraft.com brand gradient
Jun 28, 2026
1021c64
style(docs): remove green from logo gradient
Jun 28, 2026
84604c9
style: regenerate fuseraft.ico from updated icon-source.svg
Jun 28, 2026
3feac92
style(docs): update brand assets to terracotta/amber palette
Jun 28, 2026
b721a17
Merge pull request #46 from fuseraft/refactor/MAF
fuseraft Jun 28, 2026
d0dc2d1
docs: overhaul home page and fix mkdocs rendering issues
Jun 28, 2026
3d675cb
feat: add range validation for fractional fields in validate command
Wezylnia Jun 29, 2026
47b3437
fix(vscode): prevent session exit on Stop; fix models stack trace
Jul 1, 2026
509aaea
fix(memory): scope REPL memories to workspace, not global dump
Jul 1, 2026
39407fa
Merge pull request #47 from Wezylnia/fix/issue-28-fractional-range-va…
fuseraft Jul 1, 2026
472f14c
fix(search): exclude bin/obj/node_modules/.git from recursive walks
Jul 1, 2026
03f547c
feat(repl): force evidence collection to curb fabrication
Jul 1, 2026
1dfcea9
Merge pull request #48 from fuseraft/feature/vscode
fuseraft Jul 1, 2026
31c78b9
chore: cleanup
Jul 1, 2026
67eedc7
refactor(repository): extract C# graph scanning into a strategy
Jul 1, 2026
924a671
feat(repository): add Go and Python graph strategies
Jul 1, 2026
b484230
docs(repository): document Go/Python graph strategy support
Jul 1, 2026
83326c3
feat(cli): add fuseraft memory delete command
Jul 1, 2026
66972e6
feat(cli): add fuseraft memory list command
Jul 1, 2026
5325bc2
docs: update index.md
Jul 1, 2026
c3064ee
docs: lead getting-started with install scripts
Jul 1, 2026
a854798
ci(docs): add CNAME to persist custom domain on gh-deploy
Jul 1, 2026
1e721a3
feat(cli): pick model from live provider list during setup
Jul 1, 2026
a6d9306
docs: reflect live model picker in setup wizard flow
Jul 1, 2026
f122330
fix(cli): stop masking real error in provider model-fetch fallback
Jul 1, 2026
118867c
feat(cli): save config right after live model selection
Jul 1, 2026
e704033
feat(repl): close harness gaps behind Claude Code parity
Jul 3, 2026
8ab0ca0
docs: trim AGENTS.md duplication with dedicated strategy/validator docs
Jul 3, 2026
ef3f2ba
refactor(plugins): consolidate overlapping FileSystem/Shell/Search tools
Jul 3, 2026
7d8a15d
feat(cli): add FUSERAFT_HOME override for relocating ~/.fuseraft
Jul 3, 2026
b4329a3
fix(security): remove plaintext API key fallback storage
Jul 3, 2026
9d1cc9c
docs(plugins): document Investigation, Todo, and Artifact plugins
Jul 3, 2026
8c97582
fix(init): correct Investigation plugin tool-name references
Jul 3, 2026
7fb5c12
Merge pull request #49 from fuseraft/refactor/experiment
fuseraft Jul 3, 2026
4223762
docs: add arch diagram
Jul 7, 2026
f71e4e3
ci: delegate release publishing to build.cake
Jul 7, 2026
e03e5a9
feat(repl): track real provider token usage in /context and /events
Jul 7, 2026
765a007
feat(context): apply Context: spec to init templates, drop EnableMemory
Jul 7, 2026
2e0e86b
chore(repl): remove experimental repl-next command
Jul 7, 2026
d16a642
Merge pull request #50 from fuseraft/feature/context-adoption
fuseraft Jul 7, 2026
27a9a13
docs: reframe model support as inclusive of local SLMs, not just LLMs
Jul 7, 2026
f43dbef
docs: fix stale paths and stuck-detection claims across docs
Jul 7, 2026
0690ce3
fix(templates): gate Planning->BriefReview on BriefExists contract
Jul 8, 2026
d792291
fix(tracking): fix compaction file list and change-log attribution
Jul 8, 2026
cdacc71
fix: resolve architecture-review findings from FINDINGS.md
Jul 10, 2026
b194217
refactor: de-duplicate Stage 1 findings from FINDINGS.md
Jul 10, 2026
cf3cce3
feat(orchestration): wire governance/context pipeline into workflow
Jul 10, 2026
dd04eee
refactor(graph): extract GraphTopology collaborator
Jul 11, 2026
2a21341
refactor(graph): extract TurnExecutionHelpers collaborator
Jul 11, 2026
3dc0ace
refactor(graph): extract SubGraphExecutor collaborator
Jul 11, 2026
77b5ea7
refactor(graph): extract ParallelFanOutExecutor collaborator
Jul 11, 2026
47cc1f1
refactor(graph): extract HandleUnconditionalRoutingAsync
Jul 11, 2026
388c44f
refactor(graph): cleanup pass after god-object decomposition
Jul 11, 2026
1cd8579
refactor(cli): bundle CreateOrchestrator's parameter list
Jul 11, 2026
5ca3cc1
refactor(cli): extract SystemPromptBuilder from OrchestratorBuilder
Jul 11, 2026
ba0927c
refactor(cli): extract OrchestratorConfigLoader from OrchestratorBuilder
Jul 11, 2026
ca68cf9
refactor(cli): extract ApiKeyValidator from OrchestratorBuilder
Jul 11, 2026
a5c8de9
refactor(cli): cleanup pass after OrchestratorBuilder decomposition
Jul 11, 2026
aa22d49
refactor(agents): extract AgentContextCompactionFilters
Jul 11, 2026
87885fe
refactor(agents): extract AgentToolResolver from AgentFactory
Jul 11, 2026
455f7cc
refactor(agents): extract AgentMiddlewareBuilder from AgentFactory
Jul 11, 2026
38ddeec
refactor(agents): cleanup pass after AgentFactory decomposition
Jul 11, 2026
bc5cd35
refactor(repl): extract ReplConsole from ReplTurn
Jul 11, 2026
57bd442
refactor(repl): extract ReplTurnOutcome from ReplTurn
Jul 11, 2026
4e70fc1
refactor(repl): extract StreamTurnResponseAsync from ExecuteAsync
Jul 11, 2026
3f15f2c
refactor(repl): extract correction-block methods from ExecuteAsync
Jul 11, 2026
7470e60
refactor(repl): cleanup pass after ReplTurn decomposition
Jul 11, 2026
fe193de
refactor(fs-plugin): extract FileSystemSandbox from FileSystemPlugin
Jul 11, 2026
8624f11
refactor(fs-plugin): extract FilePatchDiffing from FileSystemPlugin
Jul 11, 2026
07504df
refactor(plugins): generalize PluginRegistry to multi-object-per-name
Jul 11, 2026
c0d6aca
refactor(fs-plugin): split tool surface into a second registered object
Jul 11, 2026
dd11536
refactor(fs-plugin): cleanup pass after FileSystemPlugin decomposition
Jul 11, 2026
1225859
refactor(context): extract CompactionPrefixBlockBuilder
Jul 11, 2026
008683f
refactor(agents): consolidate in-turn filter sequence into one helper
Jul 11, 2026
327533b
refactor(core): move Events and ParallelAgentBatch out of Orchestration
Jul 11, 2026
af8d231
fix(repl): suppress leaked git stderr in banner branch probe
Jul 11, 2026
9eed442
feat(init): add --no-boilerplate; fix ignore comment; prune logs in gc
Jul 11, 2026
c0c5870
fix(init): fix preflight git access and manifest.yaml detection
Jul 11, 2026
a54fd70
feat(init): add --force and guard agent files from silent overwrite
Jul 11, 2026
2a3836d
fix(eval): score handoff-only turns by their route_keyword argument
Jul 11, 2026
5d21b35
fix(eval): stop blocking on stdin for HITL escalation during eval runs
Jul 11, 2026
079db27
Merge pull request #51 from fuseraft/refactor/post-grill
fuseraft Jul 11, 2026
53e5f90
fix(init): align reviewer JSON-block prompt with validator schema
Jul 11, 2026
69d8b30
fix(init): stop Tester from fabricating per-test commands
Jul 11, 2026
f6f6c5c
fix(eval): stamp session id on change tracker in eval runs
Jul 11, 2026
ce6385c
fix: resolve orchestration bugs surfaced by fuseraft-evals runs
Jul 17, 2026
0159903
fix(repl): escape todo glyph brackets to prevent markup parse crash
Jul 17, 2026
8cbc909
ci: bump actions/checkout to v5 and setup-dotnet to v6
Jul 18, 2026
07134e0
fix: orchestration bugs surfaced by fuseraft-evals runs
Jul 21, 2026
7f4dd64
feat(eval): stream results and status live instead of end-of-run
Jul 21, 2026
7e81272
perf: reduce token overhead in tool result manifests
Aug 1, 2026
4f32026
fix: sanitize malformed LLM responses in REPL and todo plugin
Aug 1, 2026
08436e3
fix: allow first read to succeed truncated when over budget
Aug 1, 2026
fd16bf8
chore: cleanup
Aug 1, 2026
f42a826
fix(repl): reset turn-scoped plugin state
Aug 1, 2026
a7408d3
fix(repl): recover from empty replies and read-budget stalls
Aug 1, 2026
74e15ff
Merge pull request #53 from fuseraft/gpt-5.4
fuseraft Aug 1, 2026
9c3c9aa
fix(skills): repair skill compatibility across REPL and orchestration
Aug 2, 2026
5dbf1af
fix(repl): route slash-command output through JSON bridge
Aug 2, 2026
8b08c30
fix(repl): stream /explore and /locate tokens live in --vscode mode
Aug 2, 2026
232d9f3
fix(sandbox): close two write-glob bypasses in SandboxEnforcementFilter
Aug 2, 2026
d5af059
Configure Dependabot for NuGet and GitHub Actions
fuseraft Aug 3, 2026
358cb19
chore(deps): bump actions/upload-artifact from 4 to 7
dependabot[bot] Aug 3, 2026
dc84f7b
chore(deps): bump actions/setup-python from 5 to 7
dependabot[bot] Aug 3, 2026
0dc27b5
chore(deps): bump actions/download-artifact from 4 to 8
dependabot[bot] Aug 3, 2026
a33bd2b
chore(deps): bump softprops/action-gh-release from 2 to 3
dependabot[bot] Aug 3, 2026
22c0a92
chore(deps): bump actions/checkout from 5 to 7
dependabot[bot] Aug 3, 2026
aff572c
Bump cake.tool from 6.1.0 to 6.2.0
dependabot[bot] Aug 3, 2026
fafb70e
Bump Microsoft.AgentGovernance from 4.0.0 to 5.0.0
dependabot[bot] Aug 3, 2026
b026e1f
Bump Microsoft.Agents.AI.Workflows from 1.11.1 to 1.16.0
dependabot[bot] Aug 3, 2026
ec24a6d
Bump Microsoft.Data.Sqlite from 10.0.9 to 10.0.10
dependabot[bot] Aug 3, 2026
d4fe0f8
Bump Microsoft.NET.Test.Sdk from 18.7.0 to 18.8.1
dependabot[bot] Aug 3, 2026
5295ea3
Bump minver-cli from 6.0.0 to 7.0.0
dependabot[bot] Aug 3, 2026
f06a0bc
Bump OllamaSharp from 5.4.25 to 5.4.30
dependabot[bot] Aug 3, 2026
6b3a3eb
feat(run): add --json output for scripted orchestration runs
Aug 8, 2026
b704b8a
fix(run): emit JSON summary for post-config-load early failures
Aug 8, 2026
2f00f59
Merge pull request #70 from fuseraft/feature/scripting
fuseraft Aug 8, 2026
a6211e0
Merge pull request #69 from fuseraft/dependabot/nuget/src/OllamaSharp…
fuseraft Aug 8, 2026
b40e8f0
Merge pull request #67 from fuseraft/dependabot/nuget/dot-config/minv…
fuseraft Aug 8, 2026
e361a45
Merge pull request #66 from fuseraft/dependabot/nuget/tests/FuseraftC…
fuseraft Aug 8, 2026
9e8941a
Merge pull request #63 from fuseraft/dependabot/nuget/src/Microsoft.D…
fuseraft Aug 8, 2026
5c59398
Merge pull request #62 from fuseraft/dependabot/nuget/src/Microsoft.A…
fuseraft Aug 8, 2026
51415b0
Merge pull request #60 from fuseraft/dependabot/nuget/src/multi-ff8e5…
fuseraft Aug 8, 2026
c1f2319
Merge pull request #59 from fuseraft/dependabot/nuget/dot-config/cake…
fuseraft Aug 8, 2026
50f8a42
Merge pull request #58 from fuseraft/dependabot/github_actions/action…
fuseraft Aug 8, 2026
dab2d6a
Bump Microsoft.Extensions.Configuration.Abstractions and Microsoft.Ex…
dependabot[bot] Aug 8, 2026
b825448
Merge pull request #56 from fuseraft/dependabot/github_actions/action…
fuseraft Aug 8, 2026
bf8ea12
Merge pull request #55 from fuseraft/dependabot/github_actions/action…
fuseraft Aug 8, 2026
5744661
Merge pull request #54 from fuseraft/dependabot/github_actions/action…
fuseraft Aug 8, 2026
87cf3eb
Merge pull request #65 from fuseraft/dependabot/nuget/tests/FuseraftC…
fuseraft Aug 8, 2026
4aadc5b
Merge pull request #57 from fuseraft/dependabot/github_actions/softpr…
fuseraft Aug 8, 2026
91a8748
Bump ModelContextProtocol from 1.4.0 to 2.0.0 (#68)
dependabot[bot] Aug 8, 2026
4dd1851
docs: fix stale routing-mode counts and missing doc-table rows
Aug 10, 2026
71f422e
feat(termination): add structured and tokenbudget strategies
Aug 10, 2026
1e30374
fix(build): pin OllamaSharp to 5.4.25 to silence CS9057
Aug 10, 2026
1769fa3
fix(build): align Agents.AI.OpenAI version, scope MAAI001 suppression
Aug 10, 2026
544d9b8
docs: correct stale MAF-rejection claims in design.md §17-18
Aug 10, 2026
c06445f
docs: add compaction-strategy rejection to design.md §17-18
Aug 10, 2026
b0e1a96
fix(repl): persist tool history, halt on stream failure, flag cap hits
Aug 10, 2026
fd8be5c
feat(repl): curate default tool surface, add opt-in Extended plugin
Aug 10, 2026
33ea7ea
fix(repl): persist todo list across --resume
Aug 10, 2026
d5b3d08
docs: reject MagenticWorkflowBuilder in design.md §17-18
Aug 10, 2026
0691e26
fix(repl): repair history when a tool call is left unresolved
Aug 10, 2026
7c91f58
fix(repl): persist todo list on /fork
Aug 11, 2026
31e5750
fix(repl): stop Ctrl+C at an idle prompt from killing the session
Aug 11, 2026
538d45e
fix(repl): fix surrogate-pair corruption and stale tab completions
Aug 11, 2026
6c3b926
fix(repl): polish code blocks, sessions, and help text
Aug 11, 2026
d99cd0b
Bump Microsoft.Agents.AI.OpenAI from 1.16.0 to 1.17.0 (#71)
dependabot[bot] Aug 12, 2026
674b405
Bump ModelContextProtocol from 2.0.0 to 2.1.0 (#73)
dependabot[bot] Aug 12, 2026
1c05849
Bump OllamaSharp from 5.4.25 to 5.4.30 (#74)
dependabot[bot] Aug 12, 2026
05cedcd
Bump OpenTelemetry.Exporter.OpenTelemetryProtocol from 1.16.0 to 1.17…
dependabot[bot] Aug 12, 2026
e28ebe5
Bump OpenTelemetry.Instrumentation.Runtime from 1.15.1 to 1.17.0 (#77)
dependabot[bot] Aug 12, 2026
647696e
Bump SQLitePCLRaw.bundle_e_sqlite3 from 3.0.3 to 3.0.5 (#78)
dependabot[bot] Aug 12, 2026
d2aace3
Bump Microsoft.Agents.AI.Workflows from 1.16.0 to 1.17.0 (#72)
dependabot[bot] Aug 12, 2026
a6fb8ad
Bump OpenTelemetry.Instrumentation.Http from 1.16.0 to 1.17.0 (#76)
dependabot[bot] Aug 12, 2026
c979aa5
fix(tests): serialize tests that mutate FUSERAFT_HOME
Aug 12, 2026
6a40589
feat(repl): print resume command on session exit
Aug 12, 2026
8c99a8e
feat(config): stop restricting ReasoningEffort to a fixed enum
Aug 12, 2026
69eeec7
feat(orchestration): add per-agent context isolation protocol
Aug 21, 2026
0f946f6
fix(orchestration): close gaps in the agent-isolation overhaul
Aug 22, 2026
aa9463c
fix(sandbox): allow create_directory on write-glob ancestor dirs
Aug 25, 2026
1a60de7
feat(repl): make working-context token budget configurable
Aug 25, 2026
efbdb62
feat(repl): make working-context token budget configurable (#90)
fuseraft Aug 25, 2026
aae35b8
feat(skills): bring skill implementation to agentskills.io conformanc…
fuseraft Aug 29, 2026
d73ccbb
fix(tests): isolate SessionRunnerTests from the real ~/.fuseraft dir
Aug 29, 2026
83da97c
fix(knowledge): stop provenance archive writes racing each other
Aug 29, 2026
9fe831c
fix(tests): serialize AgentFactoryTests/MagenticOrchestratorTests
Aug 29, 2026
8182ebd
docs(readme): name fuseraft's model as declarative agents/workflows
Aug 29, 2026
103af8d
docs(readme): tighten hook, add BYOK, link Microsoft Agent Framework
Aug 29, 2026
219a9a4
Bump PdfPig from 0.1.15 to 0.1.16 (#92)
dependabot[bot] Sep 4, 2026
e3972bf
REPL: sub-agent delegation, model save/load, skills fixes (#94)
fuseraft Sep 4, 2026
f431912
fix(agents): stop unbounded in-turn token growth in agent loops
Sep 4, 2026
cb042c5
Fix shell quoting, BOM injection, and iteration-cap gaps (#95)
fuseraft Sep 5, 2026
08ddb83
refactor(context): consolidate token estimation into TokenEstimator
Sep 6, 2026
f659182
feat(repl): add /undo and /mcp commands
Sep 6, 2026
0be3f87
docs: document /undo and /mcp REPL commands
Sep 6, 2026
5236d27
fix(orchestration): persist context-overflow recovery, don't just retry
Sep 6, 2026
f06ec25
fix(orchestration): stop re-running a turn already satisfied on resume
Sep 6, 2026
516e4ed
fix(repl): recover from context-overflow the same way fuseraft run does
Sep 6, 2026
e869dca
fix(repl): close two REPL resource/cleanup leaks
Sep 6, 2026
6cfbdd3
feat(repl): add /hitl per-shell-call approval gate
Sep 6, 2026
88ee0ec
refactor(tools): dedupe the read-only explorer tool sets
Sep 6, 2026
2e9f0d6
docs: document /hitl REPL command
Sep 6, 2026
0466927
feat(repl): add /tools restrict for per-plugin capability filtering
Sep 6, 2026
05e1cec
fix(repl): close eleven engineering gaps found in a REPL audit pass
Sep 6, 2026
c11cb93
refactor(repl): split ReplSessionPlugin between default and /assist
Sep 7, 2026
4b185b9
fix(repl): correct stale repl_session_* claim in the system prompt
Sep 7, 2026
9142c97
feat(repl): add a scope axis to the adversarial-mode critic review
Sep 7, 2026
df69ce4
fix(repl): close /safe-mode Extended-bucket gap
Sep 7, 2026
9e0dbe5
feat(skills): add repl-tmux-driver skill
Sep 7, 2026
8d7a3d3
docs(skills): add repl-tmux-driver to the shipped skills catalog
Sep 7, 2026
374d2c5
Merge pull request #96 from fuseraft/fix/repl-audit-2026-09-06
fuseraft Sep 7, 2026
78edb6b
fix(repl): fix run-together narration and cap warning wording
Sep 7, 2026
270d365
fix(shell): drain background job output before reporting status
Sep 7, 2026
df39ae8
fix(repl): surface HITL shell-command approvals in the VS Code webview
Sep 7, 2026
93fcadd
fix(repl): make Stop actually cancel a mid-stream turn on Windows
Sep 7, 2026
0f95de1
docs: document full JSON-bridge protocol and Stop-button mechanism
Sep 7, 2026
624665e
fix(repl): stop on consecutive tool failures, not a flat round cap
Sep 7, 2026
32d7f34
Bump Microsoft.Agents.AI.Workflows from 1.17.0 to 1.20.0
dependabot[bot] Sep 7, 2026
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
  •  
  •  
  •  
6 changes: 3 additions & 3 deletions .config/dotnet-tools.json
Original file line number Diff line number Diff line change
Expand Up @@ -3,16 +3,16 @@
"isRoot": true,
"tools": {
"cake.tool": {
"version": "6.1.0",
"version": "6.2.0",
"commands": [
"dotnet-cake"
]
},
"minver-cli": {
"version": "6.0.0",
"version": "7.0.0",
"commands": [
"minver"
]
}
}
}
}
11 changes: 11 additions & 0 deletions .fuseraft/config/agents/eval-assistant.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
Name: EvalAssistant
Description: General-purpose agent for eval cases; completes tasks and signals TASK_COMPLETE.
Instructions: |
You are a capable, helpful assistant. Complete the task clearly and directly.
When you are fully done, end your response with: TASK_COMPLETE
Model:
ModelId: grok-4.3
Endpoint: https://api.x.ai/v1
Plugins:
- FileSystem
FunctionChoice: auto
20 changes: 20 additions & 0 deletions .fuseraft/config/eval.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
Orchestration:
Name: Eval Assistant
Description: Minimal single-agent config for eval cases; no multi-step pipeline or contracts.

Security:
FileSystemSandboxPath: .

Agents:
- AgentFile: agents/eval-assistant.yaml

Selection:
Type: sequential

Termination:
Type: composite
Strategies:
- Type: regex
Pattern: TASK_COMPLETE
- Type: maxiterations
MaxIterations: 10
58 changes: 58 additions & 0 deletions .fuseraft/evals/suite.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
name: Suite
# Suite-level default config. Override per-case with the 'config' key.
config: .fuseraft/config/eval.yaml

cases:
# Smoke test: quick sanity check that the team responds at all.
- id: smoke-basic
task: "Say hello and confirm you are ready."
must_succeed: true
expect_keywords:
- hello
max_turns: 3
tags:
- smoke

# Keyword check: verify the output contains required content.
- id: code-generation
task: "Write a Python function named reverse_string that returns the reverse of its input."
must_succeed: true
expect_keywords:
- def reverse_string
- return
expect_regex:
- "def reverse_string\\("
max_turns: 5
tags:
- coding

# Forbidden-keyword check: guard against undesirable response patterns.
- id: no-refusal
task: "List three benefits of automated testing."
must_succeed: true
forbidden_keywords:
- "I cannot"
- "I'm unable"
- "I am unable"
tags:
- quality

# Task from file: useful for long or multi-line prompts.
# Create the file at the path below before running this case.
# - id: file-task
# task_file: .fuseraft/evals/tasks/my-task.txt
# must_succeed: true
# max_turns: 10
# tags:
# - file-task

# Full dev-team pipeline: use config: orchestration.yaml for tasks that
# require Planner → PlannerCritic → Developer → Tester → Reviewer routing.
# - id: full-pipeline-check
# config: .fuseraft/config/orchestration.yaml
# task: "Add a hello_world() function to src/hello.py that prints 'Hello, world!'."
# must_succeed: true
# expect_keywords:
# - hello_world
# tags:
# - pipeline
4 changes: 2 additions & 2 deletions .github/SECURITY.md
Original file line number Diff line number Diff line change
Expand Up @@ -65,13 +65,13 @@ The following areas are in scope for security reports:

| Area | Notes |
|------|-------|
| **API key / credential storage** | Keychain integration (`SecretToolKeyStore`, `MacOsKeychainStore`, `WindowsCredentialManagerStore`, `PlainTextFallbackKeyStore`) and `~/.fuseraft/config` handling |
| **API key / credential storage** | Keychain integration (`SecretToolKeyStore`, `MacOsKeychainStore`, `WindowsCredentialManagerStore`, `UnavailableKeyStore`) and `~/.fuseraft/config` handling. fuseraft never writes API keys to disk in plaintext — a report that it does (or that it can be made to) is in scope. |
| **Shell plugin** | Command injection, sandbox bypass, `sudo` protection bypass |
| **FileSystem plugin** | Path traversal, sandbox escape |
| **HTTP plugin** | SSRF, allowlist bypass, private-IP filter bypass |
| **Skills execution** | Malicious scripts in project-scoped skill directories (`<cwd>/.agents/skills/`, `<cwd>/.fuseraft/skills/`) executing without user consent; credential exfiltration via subprocess env inheritance |
| **Prompt injection** | Adversarial tool results that override agent instructions |
| **Session files** | Permission issues in `~/.fuseraft/sessions/` or `repl_events.jsonl` |
| **Session files** | Permission issues in `~/.fuseraft/sessions/` or `~/.fuseraft/logs/{project_slug}/repl_events/` |
| **MCP server integration** | Malicious tool schemas, argument injection from connected servers |
| **Dependency vulnerabilities** | Known CVEs in direct NuGet dependencies that are exploitable via fuseraft-cli |

Expand Down
14 changes: 14 additions & 0 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
version: 2
updates:
# NuGet packages (PackageReference in .csproj)
- package-ecosystem: "nuget"
directory: "/"
schedule:
interval: "weekly"
open-pull-requests-limit: 10

# GitHub Actions used in .github/workflows (checkout, setup-dotnet, etc.)
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "weekly"
46 changes: 19 additions & 27 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -7,19 +7,22 @@ on:
pull_request:
branches: [main]

permissions:
contents: read # minimum needed for actions/checkout on all jobs

jobs:
# Build & Test — runs on every push and PR
build:
name: Build & Test
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v7
with:
fetch-depth: 0 # MinVer needs full history to derive the version from git tags

- name: Set up .NET 10
uses: actions/setup-dotnet@v4
uses: actions/setup-dotnet@v6
with:
dotnet-version: '10.0.x'

Expand Down Expand Up @@ -54,32 +57,15 @@ jobs:
archive: tar

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v7
with:
fetch-depth: 0 # MinVer needs full history to derive the version from git tags

- name: Set up .NET 10
uses: actions/setup-dotnet@v4
uses: actions/setup-dotnet@v6
with:
dotnet-version: '10.0.x'

- name: Restore
run: dotnet restore src/FuseraftCli.csproj --verbosity quiet

- name: Publish self-contained binary
run: |
dotnet publish src/FuseraftCli.csproj \
--configuration Release \
--runtime ${{ matrix.rid }} \
--self-contained true \
-p:PublishSingleFile=true \
-p:EnableCompressionInSingleFile=true \
-p:DebugType=none \
-p:DebugSymbols=false \
--output publish/${{ matrix.rid }} \
--nologo \
--verbosity minimal

- name: Resolve version
id: ver
run: |
Expand All @@ -94,20 +80,26 @@ jobs:
fi
echo "version=$VERSION" >> "$GITHUB_OUTPUT"

# Publish is delegated to build.cake — it's the single source of truth for what
# ships in a release (e.g. bundling fuseraft-update.exe alongside fuseraft.exe on
# Windows). Tests already ran in the build job, so skip re-running them per RID.
- name: Publish via build.cake
run: ./build.sh --target=Publish --runtime=${{ matrix.rid }} --skipTests=true

- name: Archive (tar)
if: matrix.archive == 'tar'
run: |
tar -czf fuseraft-${{ steps.ver.outputs.version }}-${{ matrix.rid }}.tar.gz \
-C publish/${{ matrix.rid }} fuseraft
-C bin fuseraft

- name: Archive (zip)
if: matrix.archive == 'zip'
run: |
cd publish/${{ matrix.rid }}
zip ../../fuseraft-${{ steps.ver.outputs.version }}-${{ matrix.rid }}.zip fuseraft.exe
cd bin
zip ../fuseraft-${{ steps.ver.outputs.version }}-${{ matrix.rid }}.zip fuseraft.exe fuseraft-update.exe

- name: Upload artifact
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v7
with:
name: fuseraft-${{ matrix.rid }}
path: fuseraft-${{ steps.ver.outputs.version }}-${{ matrix.rid }}.*
Expand All @@ -126,13 +118,13 @@ jobs:

steps:
- name: Download all platform artifacts
uses: actions/download-artifact@v4
uses: actions/download-artifact@v8
with:
path: artifacts
merge-multiple: true

- name: Create release
uses: softprops/action-gh-release@v2
uses: softprops/action-gh-release@v3
with:
files: artifacts/*
generate_release_notes: true
4 changes: 2 additions & 2 deletions .github/workflows/docs.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,9 +16,9 @@ jobs:
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4
- uses: actions/checkout@v7

- uses: actions/setup-python@v5
- uses: actions/setup-python@v7
with:
python-version: '3.x'

Expand Down
18 changes: 16 additions & 2 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@ site/
artifacts/
src/bin/
src/obj/
src/*/obj/
tools/*/bin/
tools/*/obj/

Expand All @@ -34,7 +35,6 @@ tools/*.pdb
# Session data
.fuseraft-repl-sessions.json
.fuseraft-plan.json
.fuseraft

.env
*.env
Expand All @@ -43,6 +43,20 @@ repo-summary.sh
tests/FuseraftCli.Tests/obj/**
.venv/
analyze.kiwi
PLAN.md
PLAN*.md
DEBUGGING.md
*.lscache

hashnode/

# .fuseraft/ — user-authored content is tracked; runtime artifacts live in ~/.fuseraft/
# Stale local runtime dirs written before the global migration — delete once confirmed empty
.fuseraft/red-team/
.fuseraft/logs/
.fuseraft/state/
.fuseraft/sessions/
.fuseraft/knowledge/repository/
.fuseraft/memory/
temp/TestMetadata/
CHECKLIST.md
.fuseraft/
2 changes: 1 addition & 1 deletion .vscode/tasks.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
"type": "process",
"args": [
"build",
"${workspaceFolder}/src/FuseraftCli.csproj",
"${workspaceFolder}/src/fuseraft.csproj",
"/property:GenerateFullPaths=true",
"/consoleloggerparameters:NoSummary"
],
Expand Down
Loading