Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
239 commits
Select commit Hold shift + click to select a range
1d4c1ee
feat(tui): respect history_nav_requires_empty_input for history nav
nicoechaniz Apr 22, 2026
5b52b37
feat(cli): make Ctrl+C priority configurable (interrupt_agent vs clea…
nicoechaniz Apr 17, 2026
534d6c0
fix(agent): sanitize unanswered tool_calls on interrupt to prevent tr…
nicoechaniz Apr 17, 2026
569a426
fix(cli): handle multimodal interrupt payloads in re-queue
nicoechaniz Apr 18, 2026
6207442
feat(tui): add scrollbar to input and make max lines configurable
nicoechaniz Apr 16, 2026
cff1d33
fix(cli): restore TUI config support in prompt_toolkit input
nicoechaniz Apr 22, 2026
a6c20e1
chore(gitignore): ignore local project memory and session artifacts
nicoechaniz Apr 23, 2026
6d50e64
feat(kimi): OAuth coding integration with X-Msh-* headers and tempera…
nicoechaniz Apr 22, 2026
a0849a6
chore(kimi): remove temperature pinning for Kimi coding
nicoechaniz Apr 25, 2026
bcbd38c
fix(kimi): repair upstream transport merge
nicoechaniz Apr 25, 2026
a8ba5b1
Merge branch 'feat/altermundi-tui'
nicoechaniz Apr 25, 2026
e504983
Merge branch 'feat/kimi-oauth-clean'
nicoechaniz Apr 25, 2026
9292e1b
fix(auxiliary): refresh Kimi OAuth credentials on 401 for memory flush
nicoechaniz Apr 28, 2026
a2d4732
Merge branch 'feat/kimi-oauth-clean'
nicoechaniz Apr 28, 2026
412df95
Merge branch 'nousmain' into feat/kimi-oauth-clean
nicoechaniz Apr 28, 2026
8e5160f
Merge branch 'nousmain' into feat/altermundi-cli
nicoechaniz Apr 28, 2026
6a6e0a8
Merge branch 'nousmain' into feat/altermundi-tui
nicoechaniz Apr 28, 2026
8988de7
Merge upstream/main (nousmain) into main
nicoechaniz Apr 28, 2026
1811b9e
Merge branch 'feat/kimi-oauth-clean'
nicoechaniz Apr 28, 2026
4a0365f
Merge branch 'feat/altermundi-cli'
nicoechaniz Apr 28, 2026
dc28400
Merge branch 'feat/altermundi-tui'
nicoechaniz Apr 28, 2026
442000f
feat: configurable compression protect_first_n and custom prompt
nicoechaniz Apr 29, 2026
6dba014
Merge remote-tracking branch 'upstream/main'
nicoechaniz Apr 29, 2026
371e3e0
Merge branch 'feat/compression-config'
nicoechaniz Apr 29, 2026
5611017
fix(agent): enable prompt caching for MiniMax own models on anthropic…
nicoechaniz Apr 29, 2026
0150e89
Merge feat/minimax-prompt-caching: MiniMax prompt caching fix (#17333)
nicoechaniz Apr 29, 2026
412d505
fix(agent): default MiniMax provider to anthropic_messages + base_url
nicoechaniz Apr 29, 2026
893fed4
Merge feat/minimax-prompt-caching: MiniMax AIAgent default api_mode +…
nicoechaniz Apr 29, 2026
aaa63f2
Merge upstream/main (v2026.4.30) into main
nicoechaniz May 1, 2026
6e43238
fix(agent): default MiniMax provider to anthropic_messages + correct …
nicoechaniz May 1, 2026
5a2a977
Merge branch 'feat/minimax-defaults'
nicoechaniz May 1, 2026
32d7b91
feat(agent): configurable compression protect_first_n and custom prompt
nicoechaniz May 1, 2026
f6c67a6
Merge branch 'feat/compression-config-reboot'
nicoechaniz May 1, 2026
b2086db
feat(gateway/daemoncraft): heartbeat context injection for DC-112
nicoechaniz May 2, 2026
bc50463
feat(gateway): two-level event architecture for DC-112
nicoechaniz May 2, 2026
67ec533
fix(gateway): restore DaemonCraft adapter wiring lost in rebase
nicoechaniz May 2, 2026
4a488bd
fix(gateway): pass tool_choice through _run_agent signature
nicoechaniz May 2, 2026
a2b1c1f
feat(gateway/daemoncraft): heartbeat context injection for DC-112
nicoechaniz May 2, 2026
032ac1b
feat(gateway): two-level event architecture for DC-112
nicoechaniz May 2, 2026
485abc4
fix(gateway): restore DaemonCraft adapter wiring lost in rebase
nicoechaniz May 2, 2026
42ca6ed
fix(gateway): pass tool_choice through _run_agent signature
nicoechaniz May 2, 2026
18313cb
Merge branch 'feat/dc-112-daemoncraft-gateway'
nicoechaniz May 2, 2026
78a7c23
fix(gateway): register daemoncraft platform + handle kimi tool_choice…
nicoechaniz May 2, 2026
6603628
feat(transport): generic thinking disable for tool_choice=required
nicoechaniz May 2, 2026
7d2c23b
fix(gateway): load per-message profile config for multi-profile setups
nicoechaniz May 2, 2026
380485b
DC-99: gateway per-platform profile support for daemoncraft adapter
nicoechaniz May 1, 2026
fae7187
DC-99: profile system prompt overrides global ephemeral prompt
nicoechaniz May 1, 2026
68de915
DC-99: skip global context files when gateway session uses a profile
nicoechaniz May 1, 2026
7402680
DC-99: override cached system prompt with profile prompt
nicoechaniz May 1, 2026
b3dc3df
fix(gateway/daemoncraft): scope group chat_id per bot to isolate sess…
nicoechaniz May 3, 2026
2020a5c
feat(tools): track minecraft_tools.py and register minecraft toolset
nicoechaniz May 3, 2026
c788571
feat(tools): session-scoped endpoint resolution for minecraft tools
nicoechaniz May 3, 2026
d70fd6e
fix(tools): remove undefined session_id from check_minecraft_available
nicoechaniz May 3, 2026
7cea0ff
refactor(tools): replace global endpoint dict with contextvars
nicoechaniz May 3, 2026
cccdfa0
chore(git): move MEMORY.md ignore from .gitignore to local exclude
nicoechaniz May 3, 2026
872f121
fix(gateway/daemoncraft): classify task_stuck heartbeat as wake_up
nicoechaniz May 3, 2026
1080ded
feat(gateway/daemoncraft): post agent logs to bot server for dashboard
nicoechaniz May 3, 2026
0b9c4e2
feat(gateway/daemoncraft): plan-driven heartbeat wake-ups + plan GC
nicoechaniz May 3, 2026
61ac70e
fix(gateway/daemoncraft): use sequential turn counter for agent logs
nicoechaniz May 3, 2026
5e0ca78
feat(agent,gateway): DC-134 configurable turn wall-clock timeout
nicoechaniz May 3, 2026
a96dbbd
fix(gateway): DC-134 read max_iterations and turn_timeout from profil…
nicoechaniz May 3, 2026
88206d5
chore: update MEMORY.md — DC consolidation, branch cleanup
nicoechaniz May 8, 2026
c347435
fix(gateway/daemoncraft): run transform_tool_result hooks on syntheti…
Fede654 May 3, 2026
7839ae1
feat(gateway/daemoncraft): port CycleDetector from daemoncraft agents…
Fede654 May 3, 2026
d61be7f
fix(DC-123): relay agent turns to Bot Mind panel and restore TTS on D…
Fede654 May 3, 2026
6fee953
test(gateway): CycleDetector + synthetic perceive hook coverage
Fede654 May 3, 2026
1131d12
feat(gateway/daemoncraft): emit mc_action_result hook for action_resu…
Fede654 May 3, 2026
542423a
feat(gateway/daemoncraft): emit DC-132 turn + tool metrics
Fede654 May 3, 2026
2d4db07
fix(gateway/daemoncraft): use os.O_APPEND single-write for DC-132 met…
Fede654 May 3, 2026
573b88b
fix(gateway/daemoncraft): DC-123 TTS fixes + wake-up logging, DC-132 …
nicoechaniz May 3, 2026
d9f0cca
chore: add upstream velocity context to MEMORY.md
nicoechaniz May 8, 2026
e94a527
merge: sync with upstream/main (2026-05-08)
nicoechaniz May 8, 2026
e2624a8
chore: update MEMORY.md — sync complete, v2026.5.7
nicoechaniz May 8, 2026
b395e94
chore: update MEMORY.md — memory scope rules, DC-MIG architecture note
nicoechaniz May 8, 2026
172454e
fix(daemoncraft): move TTS relay from _post_agent_log to send()
nicoechaniz May 8, 2026
1ef7d53
chore(git): untrack project-local memory
nicoechaniz May 8, 2026
18d7e08
fix(compressor): define preamble/template before prompt f-strings
Fede654 May 8, 2026
f168790
docs: add CHANGELOG and AGENTS_SETUP for multi-agent roster (2026-05-09)
nicoechaniz May 9, 2026
b29185d
fix: daemoncraft adapter skips heartbeat turns from dashboard
nicoechaniz May 9, 2026
942e660
feat(tools): embodied_plan tool + retire minecraft/altercraft toolsets
Fede654 May 9, 2026
e2c4f7c
feat(daemoncraft): embodied heartbeat — inject Gemma-Andy world state
nicoechaniz May 10, 2026
1233ad8
Merge pull request #3 from Fede654/fix/compressor-preamble-template-bug
nicoechaniz May 10, 2026
c4abd23
fix(compressor): define preamble/template before prompt f-strings
Fede654 May 8, 2026
b99e34b
Merge branch 'feat/embodied-heartbeat' into feat/daemoncraft
nicoechaniz May 10, 2026
07dd167
fix(embodied): pass BOT_API_URL from env to embodied service
nicoechaniz May 10, 2026
598ca41
fix(daemoncraft): @name! = interrupt, @name = steer + dynamic known_bots
nicoechaniz May 10, 2026
1b3736a
feat(kanban): ship-review orchestration — review graph, templates, te…
nicoechaniz May 11, 2026
9ad5cd6
Merge branch 'nousmain'
nicoechaniz May 11, 2026
5c0f94b
Merge branch 'feat/daemoncraft'
nicoechaniz May 11, 2026
c67de94
fix(model-metadata): prioritize curated defaults over OpenRouter for …
nicoechaniz May 11, 2026
9e9de23
Merge branch 'fix/kimi-context-length-resolution'
nicoechaniz May 11, 2026
b7c344a
docs: add CHANGELOG.md — team-facing fork changelog
nicoechaniz May 11, 2026
a610f02
feat(autoresearch): vendor AutoResearchClaw skills and prompts
Fede654 Apr 22, 2026
04a0c03
feat(autoresearch): implement ResearchSupervisor and program.md template
Fede654 Apr 22, 2026
a3efd71
test(autoresearch): add integration tests for ResearchSupervisor
Fede654 Apr 22, 2026
7f2bf08
feat(autoresearch): apply Karpathy guidelines to experiment loop
Fede654 Apr 22, 2026
4945852
feat(research): generalize supervisor loop to any measurable task type
Fede654 Apr 22, 2026
0a72cc4
feat(research): incorporate Autogenesis AOOR loop and HeartbeatMemory…
Fede654 Apr 22, 2026
d04b657
fix(research): address audit findings — rollback, observe, reflect gu…
Fede654 Apr 22, 2026
f35906f
feat(research): wire ResearchSupervisor as tool + researcher profile …
Fede654 Apr 22, 2026
cfb1a66
fix(autoresearch): apply Codex ia-bridge review findings
Fede654 Apr 22, 2026
10ad394
fix(autoresearch): apply analysis fixes from full cycle validation
Fede654 Apr 22, 2026
8efc19b
fix(autoresearch): correct sandbox messaging and add partial recovery
Fede654 Apr 22, 2026
809cb2b
fix(autoresearch): add Tools Available + anti-XML guard to task briefs
Fede654 Apr 22, 2026
dccfdd9
fix(autoresearch): include terminal in research/search default toolsets
Fede654 Apr 22, 2026
133c4bd
feat(autoresearch): add research_job tool for detached long-running l…
Fede654 Apr 22, 2026
e99cb97
feat(autoresearch): add research_job orchestration for long-running l…
Fede654 Apr 22, 2026
bb5a775
perf(autoresearch): implement 5 optimization fixes from log analysis
Fede654 Apr 22, 2026
bb9d2bf
fix(autoresearch): restore LLM judge on every iteration
Fede654 Apr 23, 2026
62d6763
docs(autoresearch): update research docs with latest architecture and…
Fede654 Apr 23, 2026
71ff6c0
fix(autoresearch): address nicoechaniz PR#1 review — hardcoded paths …
Fede654 Apr 24, 2026
25f6145
docs(research): HRM-56 document .lattice/ dependency for research_job…
Fede654 Apr 24, 2026
11f1e6f
fix(autoresearch): address nicoechaniz PR#1 review — workspace fallba…
Fede654 Apr 24, 2026
005abb6
docs(autoresearch): nicoechaniz PR#1 follow-ups — surface karpathy sk…
Fede654 Apr 24, 2026
c6eb179
fix(autoresearch): harden LLM judge parser against real-world responses
Fede654 Apr 24, 2026
095ecd5
refactor(researcher): drop mcp-obsidian; vault is plain Markdown + git
Fede654 Apr 25, 2026
e2cbf1d
refactor(researcher): drop mcp-lattice; use the lattice CLI directly
Fede654 Apr 25, 2026
f7dcd6a
fix(researcher): default model kimi-k2.6 / kimi-coding instead of cla…
Fede654 Apr 25, 2026
311dcf4
docs(researcher): operational tool patterns + codebase layout from sw…
Fede654 Apr 25, 2026
a73fe95
chore(autoresearch): drop unused prompts/autoresearch.yaml (HRM-60)
Fede654 Apr 25, 2026
81e9362
feat(autoresearch): inherit_profile opt-in for delegate_task workers …
Fede654 Apr 25, 2026
ebd2761
feat(autoresearch): persist run lessons via EvolutionStore (HRM-59 v1)
Fede654 Apr 25, 2026
8336e17
feat(autoresearch): centralize detached-agent construction in agent/f…
Fede654 Apr 25, 2026
6721717
refactor(autoresearch): consolidate agent/research_*.py into agent/re…
Fede654 Apr 25, 2026
b8acd79
feat(autoresearch): wire EvolutionStore.build_overlay into worker bri…
Fede654 Apr 25, 2026
25f4d6f
feat(autoresearch): extend AIAgent.__init__ with detached-parent kwar…
Fede654 Apr 25, 2026
a354638
docs(researcher): SOUL.md adds autonomous-execution-mode override (HR…
Apr 27, 2026
49dbe60
fix(autoresearch): clarify run_research dispatch in subagent contexts…
Apr 27, 2026
39234fa
feat(autoresearch): durable checkpoint resume in research loop (HRM-93)
Fede654 May 7, 2026
d93f467
feat(autoresearch): atomic workspace snapshots per iteration (HRM-96)
Fede654 May 7, 2026
b91bf73
HRM-95: Add check_research_stale stub and timeout_sec parameter to ru…
Fede654 May 7, 2026
b6279b6
HRM-94: Forward timeout_sec from spec to run_research in job_runner
Fede654 May 7, 2026
c38e720
HRM-94-95: Add RED stub tests and design document for timeout and hea…
Fede654 May 7, 2026
613c5c4
fix(autoresearch): harden restore_snapshot path validation (Fix-1)
Fede654 May 7, 2026
0b5ce51
fix(autoresearch): cross-file consistency on checkpoint resume (Fix-2)
Fede654 May 7, 2026
ede0f1d
fix(autoresearch): subprocess-based timeout + heartbeat (Fix-3)
Fede654 May 7, 2026
049c945
feat(kanban): ship-review orchestration — review graph, templates, te…
nicoechaniz May 11, 2026
d29db99
feat(kanban): wire review create subcommand into CLI
nicoechaniz May 11, 2026
9ef66d9
HRM-100: cost accounting per iteration and job
Fede654 May 7, 2026
7abe1db
HRM-101: ResearchEvent enum + emission
Fede654 May 7, 2026
14a8d31
HRM-102: Align research_job_tool config with research_tool (acceptanc…
Fede654 May 7, 2026
cfda829
HRM-108: Hypothesis fan-out — N parallel workers per iteration via de…
Fede654 May 8, 2026
291ea12
HRM-109: MOA-style aggregation — synthesize N fan-out branches into s…
Fede654 May 8, 2026
841b822
feat(research): A/B testing between research strategies (HRM-110)
Fede654 May 8, 2026
1042f1b
docs(research): document A/B testing in RESEARCH_AGENTS.md + integrat…
Fede654 May 8, 2026
879e390
docs(architecture): review autoresearch + /goal + kanban integration …
Fede654 May 8, 2026
1350c46
fix(autoresearch): polish 3 mechanics issues found in scripted valida…
Fede654 May 8, 2026
e6d3882
feat(autoresearch): introduce ProgressSink Protocol + StubSink
Fede654 May 8, 2026
ad80df5
feat(autoresearch): add KanbanSink for kanban-backed progress tracking
Fede654 May 8, 2026
e738159
refactor(autoresearch): wire ProgressSink into supervisor + runner + …
Fede654 May 8, 2026
4cea816
refactor(autoresearch): drop lattice from tools layer, surface kanban…
Fede654 May 8, 2026
33a0c74
feat(autoresearch): auto_specify_topic helper for vague topics
Fede654 May 9, 2026
6a5c32b
feat(autoresearch): run_research(auto_specify=True) for vague topics
Fede654 May 9, 2026
edd1ff3
fix(factory): patch runtime invariants post-init (HRM-57 full never l…
Fede654 May 9, 2026
0a185f4
docs(approval): clarify sensitive-write patterns block (not allowlist)
Fede654 May 11, 2026
58a383b
feat(toolsets): expose research_job in research toolset; fix schema
Fede654 May 11, 2026
0da1a2e
docs(autoresearch): finish Lattice → Kanban migration
Fede654 May 11, 2026
a438120
fix(research_job): resolve Kimi OAuth correctly; repair terminal spawn
Fede654 May 11, 2026
3cd6200
fix(auxiliary_client): evict _resolve_provider_cache on credential re…
Fede654 May 11, 2026
94dbcad
fix(ci): import time in research_job_tool; map Fede654 in AUTHOR_MAP
Fede654 May 11, 2026
382366d
docs(researcher-scaffold): SOUL.md teaches resume protocol + kanban_b…
Fede654 May 12, 2026
c659706
feat(gateway/daemoncraft): heartbeat context injection for DC-112
nicoechaniz May 2, 2026
0302755
feat(gateway): two-level event architecture for DC-112
nicoechaniz May 2, 2026
191b158
fix(gateway): restore DaemonCraft adapter wiring lost in rebase
nicoechaniz May 2, 2026
55f0bee
fix(gateway): pass tool_choice through _run_agent signature
nicoechaniz May 2, 2026
ee0e1f3
feat(gateway/daemoncraft): heartbeat context injection for DC-112
nicoechaniz May 2, 2026
0785b2f
fix(gateway): register daemoncraft platform + handle kimi tool_choice…
nicoechaniz May 2, 2026
f29d12a
feat(transport): generic thinking disable for tool_choice=required
nicoechaniz May 2, 2026
a1bbf39
DC-99: override cached system prompt with profile prompt
nicoechaniz May 1, 2026
2aa8486
feat(tools): track minecraft_tools.py and register minecraft toolset
nicoechaniz May 3, 2026
0ae7cec
feat(tools): session-scoped endpoint resolution for minecraft tools
nicoechaniz May 3, 2026
a2fd875
fix(tools): remove undefined session_id from check_minecraft_available
nicoechaniz May 3, 2026
b713cd5
refactor(tools): replace global endpoint dict with contextvars
nicoechaniz May 3, 2026
eb2472e
fix(gateway/daemoncraft): classify task_stuck heartbeat as wake_up
nicoechaniz May 3, 2026
755390d
feat(gateway/daemoncraft): post agent logs to bot server for dashboard
nicoechaniz May 3, 2026
be74ff9
feat(gateway/daemoncraft): plan-driven heartbeat wake-ups + plan GC
nicoechaniz May 3, 2026
77768dd
fix(gateway/daemoncraft): use sequential turn counter for agent logs
nicoechaniz May 3, 2026
e484767
feat(agent,gateway): DC-134 configurable turn wall-clock timeout
nicoechaniz May 3, 2026
5871923
fix(gateway): DC-134 read max_iterations and turn_timeout from profil…
nicoechaniz May 3, 2026
17abca9
chore: update MEMORY.md — DC consolidation, branch cleanup
nicoechaniz May 8, 2026
7848231
fix(gateway/daemoncraft): run transform_tool_result hooks on syntheti…
Fede654 May 3, 2026
24ee310
feat(gateway/daemoncraft): port CycleDetector from daemoncraft agents…
Fede654 May 3, 2026
301f8ab
fix(DC-123): relay agent turns to Bot Mind panel and restore TTS on D…
Fede654 May 3, 2026
28be826
test(gateway): CycleDetector + synthetic perceive hook coverage
Fede654 May 3, 2026
14caee4
feat(gateway/daemoncraft): emit mc_action_result hook for action_resu…
Fede654 May 3, 2026
0bff34a
feat(gateway/daemoncraft): emit DC-132 turn + tool metrics
Fede654 May 3, 2026
ffc9a5e
fix(gateway/daemoncraft): use os.O_APPEND single-write for DC-132 met…
Fede654 May 3, 2026
4ee1a56
fix(gateway/daemoncraft): DC-123 TTS fixes + wake-up logging, DC-132 …
nicoechaniz May 3, 2026
dab1615
chore: add upstream velocity context to MEMORY.md
nicoechaniz May 8, 2026
f7f508c
chore: update MEMORY.md — sync complete, v2026.5.7
nicoechaniz May 8, 2026
37b8193
chore: update MEMORY.md — memory scope rules, DC-MIG architecture note
nicoechaniz May 8, 2026
3be5956
fix(daemoncraft): move TTS relay from _post_agent_log to send()
nicoechaniz May 8, 2026
a462a05
chore(git): untrack project-local memory
nicoechaniz May 8, 2026
1fe8227
docs: add CHANGELOG and AGENTS_SETUP for multi-agent roster (2026-05-09)
nicoechaniz May 9, 2026
20cb729
fix: daemoncraft adapter skips heartbeat turns from dashboard
nicoechaniz May 9, 2026
db32100
feat(tools): embodied_plan tool + retire minecraft/altercraft toolsets
Fede654 May 9, 2026
50df458
feat(daemoncraft): embodied heartbeat — inject Gemma-Andy world state
nicoechaniz May 10, 2026
8d343e0
fix(embodied): pass BOT_API_URL from env to embodied service
nicoechaniz May 10, 2026
90da48c
fix(daemoncraft): @name! = interrupt, @name = steer + dynamic known_bots
nicoechaniz May 10, 2026
8c73417
fix(model-metadata): prioritize curated defaults over OpenRouter for …
nicoechaniz May 11, 2026
348bc6c
feat(kimi): OAuth coding integration with X-Msh-* headers
nicoechaniz May 13, 2026
e50b0a0
fix(kimi): resolve CLI OAuth credentials at runtime
nicoechaniz May 13, 2026
5072e49
fix(auxiliary): refresh Kimi OAuth credentials on 401 for memory flush
nicoechaniz Apr 28, 2026
a55cd3c
Merge remote-tracking branch 'fede/feat/hermes-autoresearch-upstream'…
nicoechaniz May 14, 2026
9d35c1e
chore(autoresearch): drop Kimi OAuth changes from Fede's branch; use …
nicoechaniz May 14, 2026
ae0b51c
fix(kimi): KIMI_CODE_BASE_URL must include /v1 suffix (prevents 404 o…
nicoechaniz May 14, 2026
3452732
feat(daemoncraft): idle heartbeats wake up Steve every 30s
nicoechaniz May 14, 2026
c86c352
fix(tools): remove hard block on consecutive read_file calls — keep w…
nicoechaniz May 14, 2026
005cd10
fix(daemoncraft): increase idle wake-up throttle 30s → 90s
nicoechaniz May 14, 2026
b07bf43
refactor(kimi): centralize OAuth resolution in resolve_api_key_provid…
nicoechaniz May 14, 2026
d6323e1
fix(kimi): refresh oauth tokens and retry once on 401
nicoechaniz Apr 22, 2026
37f3421
fix(kimi): use kimi_coding_default_headers() in all provider paths
nicoechaniz May 13, 2026
d5d5e0b
fix(terminal): expand ~ and env vars in workdir for background processes
nicoechaniz May 15, 2026
7a43cd4
fix(terminal): correct default TERMINAL_TIMEOUT display in terminal info
nicoechaniz May 15, 2026
f312134
feat: add Kimi WebBridge toolset
nicoechaniz May 16, 2026
7aaced5
feat(daemoncraft): wire GemmaPolicy into embodied_plan tool
nicoechaniz May 16, 2026
05dee30
fix(gateway/daemoncraft): narrow heartbeat allowed_tools to perceptio…
nicoechaniz May 16, 2026
6375935
feat(daemoncraft): route heartbeat through policy wrapper with percep…
nicoechaniz May 16, 2026
99185ed
Revert "feat(daemoncraft): route heartbeat through policy wrapper wit…
nicoechaniz May 16, 2026
56c61ba
feat: add Tier 2a spatial recovery to embodied_plan raw handler
nicoechaniz May 16, 2026
a16bc0c
fix(daemoncraft): make mc_bit tool synchronous
nicoechaniz May 16, 2026
730088d
docs: add mc_bit fix changelog entry
nicoechaniz May 16, 2026
d95e3a3
docs: Grok Web Bridge provider status and paste-loop design
nicoechaniz May 16, 2026
45e1c61
docs: Grok Web Bridge provider status and paste-loop design
nicoechaniz May 16, 2026
e4cb568
Revert "docs: Grok Web Bridge provider status and paste-loop design"
nicoechaniz May 16, 2026
992306e
feat(policy): sync deterministic strategy map + wire into embodied_plan
nicoechaniz May 16, 2026
aa6df6b
Merge branch 'feat/daemoncraft' into main-rebuild
nicoechaniz May 17, 2026
d1664cf
Merge branch 'feat/kimi' into main-rebuild
nicoechaniz May 17, 2026
a187504
Merge branch 'feat/kimi-webbridge' into main-rebuild
nicoechaniz May 17, 2026
f00d7ad
Merge branch 'feat/altermundi' into main-rebuild
nicoechaniz May 17, 2026
1c27d90
Merge branch 'feat/minimax-defaults' into main-rebuild
nicoechaniz May 17, 2026
1975dfa
Merge branch 'feat/kanban-review' into main-rebuild
nicoechaniz May 17, 2026
4f85f75
Merge branch 'feat/autoresearch' into main-rebuild
nicoechaniz May 17, 2026
2b2ea8f
docs: document fork branch workflow and changelog
nicoechaniz May 17, 2026
5b14b7d
Merge branch 'feat/altermundi' into main-rebuild
nicoechaniz May 17, 2026
f2a296d
Merge branch 'feat/read-file-consecutive' into main-rebuild
nicoechaniz May 17, 2026
cd5ee4f
test(autoresearch): fix provider credential mocks
nicoechaniz May 17, 2026
d074f5a
Merge branch 'feat/autoresearch' into main-rebuild
nicoechaniz May 17, 2026
1c0e6d7
fix(gemma_policy): add craft category + narrow inventory_query keywor…
Pablomonte May 17, 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
8 changes: 4 additions & 4 deletions .env.example
Original file line number Diff line number Diff line change
Expand Up @@ -75,12 +75,12 @@
# =============================================================================
# MiniMax provides access to MiniMax models (global endpoint)
# Get your key at: https://www.minimax.io
# MINIMAX_API_KEY=
# MINIMAX_BASE_URL=https://api.minimax.io/v1 # Override default base URL
# MINIMAX_API_KEY=***
# MINIMAX_BASE_URL=https://api.minimax.io/anthropic # Anthropic-compatible endpoint (required for prompt caching)

# MiniMax China endpoint (for users in mainland China)
# MINIMAX_CN_API_KEY=
# MINIMAX_CN_BASE_URL=https://api.minimaxi.com/v1 # Override default base URL
# MINIMAX_CN_API_KEY=***
# MINIMAX_CN_BASE_URL=https://api.minimaxi.com/anthropic # Anthropic-compatible endpoint (required for prompt caching)

# =============================================================================
# LLM PROVIDER (OpenCode Zen)
Expand Down
4 changes: 4 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -70,3 +70,7 @@ mini-swe-agent/
result
website/static/api/skills-index.json
models-dev-upstream/

# Local project memory and session artifacts (never commit)
.codex
hermes_conversation_*.json
11 changes: 11 additions & 0 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,17 @@ source .venv/bin/activate # or: source venv/bin/activate
`$HOME/.hermes/hermes-agent/venv` (for worktrees that share a venv with the
main checkout).

## Fork Branch Workflow

This fork uses a two-layer branch model. See `FORK_WORKFLOW.md` for the full procedure.

- `nousmain` is the local mirror of `upstream/main`. Do not commit directly to it.
- `main` is the integration branch deployed to `~/.hermes/hermes-agent`.
- Canonical feature/fix branches should be clean patch stacks over `nousmain`, not over `main`.
- Active canonical branches are documented in `FORK_WORKFLOW.md`.
- Before push/pull, run `git remote -v` and verify `origin` vs `upstream`.
- After meaningful fork sync/deploy, also run the CompAII rebirth sync (`python ~/Projects/compaii-state/sync.py`).

## Project Structure

File counts shift constantly — don't treat the tree below as exhaustive.
Expand Down
102 changes: 102 additions & 0 deletions AGENTS_SETUP.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
# Agent Setup Guide

How to set up and run the multi-agent Kanban coding roster on your machine.

## Prerequisites

- Hermes Agent installed and working (`hermes chat -q "hello"`)
- API keys for your preferred providers in `~/.hermes/.env`
- Git access to this repo

## Quick Start

```bash
# 1. Pull latest
cd ~/Projects/hermes-agent
git pull origin main

# 2. Sync deploy target (if using gateway)
cd ~/.hermes/hermes-agent
git pull local-project main

# 3. Create profiles (one-time)
hermes profile create riqui
hermes profile create miki
hermes profile create maxi

# 4. Copy configs from repo
cp ~/Projects/hermes-agent/profiles/riqui/config.yaml ~/.hermes/profiles/riqui/
cp ~/Projects/hermes-agent/profiles/miki/config.yaml ~/.hermes/profiles/miki/
cp ~/Projects/hermes-agent/profiles/maxi/config.yaml ~/.hermes/profiles/maxi/

# 5. ADAPT PROVIDERS TO YOUR STACK (IMPORTANT)
# Edit each profile's config.yaml:
# - model.provider: your provider (openrouter, anthropic, nous, etc.)
# - model.default: your model name
# - model.base_url: your provider's endpoint (if needed)
# - model.api_key or symlink .env
$EDITOR ~/.hermes/profiles/riqui/config.yaml
$EDITOR ~/.hermes/profiles/miki/config.yaml
$EDITOR ~/.hermes/profiles/maxi/config.yaml

# 6. Copy SOUL.md files
cp ~/Projects/hermes-agent/profiles/riqui/SOUL.md ~/.hermes/profiles/riqui/
cp ~/Projects/hermes-agent/profiles/miki/SOUL.md ~/.hermes/profiles/miki/
cp ~/Projects/hermes-agent/profiles/maxi/SOUL.md ~/.hermes/profiles/maxi/

# 7. Symlink .env and agent-memory
ln -sf ~/.hermes/.env ~/.hermes/profiles/riqui/.env
ln -sf ~/.hermes/.env ~/.hermes/profiles/miki/.env
ln -sf ~/.hermes/.env ~/.hermes/profiles/maxi/.env
ln -sf ~/.hermes/agent-memory ~/.hermes/profiles/riqui/agent-memory
ln -sf ~/.hermes/agent-memory ~/.hermes/profiles/miki/agent-memory
ln -sf ~/.hermes/agent-memory ~/.hermes/profiles/maxi/agent-memory

# 8. Test each profile
hermes -p riqui chat -q "hello" --quiet
hermes -p miki chat -q "hello" --quiet
hermes -p maxi chat -q "hello" --quiet # ⚠ known issue: maxi needs api_mode fix
```

## Profile Reference

| Profile | Purpose | Key config | Status |
|---------|---------|-----------|--------|
| riqui | Fast surgical coding | max_turns=30, reasoning=minimal | ✓ Working |
| miki | Deep-thinking coding (Kimi) | max_turns=30, reasoning=high | ✓ Working |
| maxi | Deep-thinking coding (MiniMax) | max_turns=30, reasoning=high, Anthropic endpoint | ⚠ API mode bug |

## Provider Adaptation

The profiles assume our stack (DeepSeek, Kimi OAuth, MiniMax API key). To use different providers:

### Using OpenRouter
```yaml
model:
default: openai/gpt-5.4 # or anthropic/claude-sonnet-4-6, etc.
provider: openrouter
```

### Using Anthropic Direct
```yaml
model:
default: claude-sonnet-4-6-20250514
provider: anthropic
```

### Using Nous Portal
```yaml
model:
default: anthropic/claude-sonnet-4-6
provider: nous
```

The `agent.max_turns` and `agent.reasoning_effort` settings are provider-agnostic.

## Kanban Worker Rules (CRITICAL)

- All coding profiles MUST have `max_turns >= 25` and `reasoning_effort >= minimal`
- Lower values cause protocol violations (exhausted iterations before kanban_complete)
- Kanban dispatcher spawns `hermes -p <profile> --skills kanban-worker chat -q "work kanban task <id>"`
- Workers MUST end with `kanban_complete()` or `kanban_block()` — text-only exit is a violation
- Dispatcher auto-blocks after 1 protocol violation (effective_limit=1)
101 changes: 101 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
# Changelog — nicoechaniz/hermes-agent fork

Team-facing summary of changes to our fork. For branch topology and sync commands, see `FORK_WORKFLOW.md`.

> Provider note: profile configs reference DeepSeek, Kimi, and MiniMax providers because that is our stack. Team members using different providers should adapt `model.provider`, `model.default`, and `model.base_url` in each profile's `config.yaml`. API keys go in each profile's `.env` or a symlinked shared `.env`.

## 2026-05-14 — Kimi OAuth architecture consolidation

### Centralized resolution

- `resolve_api_key_provider_credentials()` now automatically tries Kimi CLI OAuth (`~/.kimi/credentials/kimi-code.json`) when no `KIMI_API_KEY` env var is present.
- Removed 33 lines of scattered ad-hoc OAuth fallback code from `runtime_provider.py` (`_try_kimi_oauth_credentials()` and both call sites).
- All consumers of the canonical resolver (runtime provider, auxiliary client, etc.) get OAuth automatically without manual fallback code.

### Branch sync

- Cherry-picked missing Kimi commits from `main` into `feat/kimi`:
- `_try_refresh_kimi_client_credentials()` in `run_agent.py` (mid-conversation 401 refresh)
- `kimi_coding_default_headers()` applied consistently across all provider paths
- `feat/kimi` is now a complete clean patch stack with no Kimi gaps vs `main`.
- Merged back to `main`, resolved one minor merge conflict in `agent/auxiliary_client.py`.

### Test fixes

- Fixed `test_resolve_kimi_prefers_cli_oauth_without_api_key`: mock now accepts `**kwargs` to match the new `allow_api_key_fallback=False` call signature.
- Fixed two pre-existing broken tests with mismatched mock values:
- `test_resolve_runtime_provider_kimi_uses_oauth_chat_mode`
- `test_resolve_runtime_provider_lmstudio_uses_token_when_present`

### Verification

- All 287 provider/auth tests pass: `scripts/run_tests.sh tests/hermes_cli/test_runtime_provider_resolution.py tests/hermes_cli/test_api_key_providers.py -q`

## 2026-05-13 — Kimi branch consolidation

### Branch workflow

- Canonical Kimi branch is now `feat/kimi`.
- `feat/kimi` is a clean patch stack over `nousmain`.
- Superseded branches removed from `origin`:
- `feat/kimi-oauth-clean`
- `feat/kimi-oauth-clean-v3`
- `fix/kimi-context-length-resolution`
- `main` is the integration branch: `nousmain` plus all active canonical feature branches.
- Runtime deploy target `~/.hermes/hermes-agent` tracks `origin/main`.

### Kimi support in `feat/kimi`

- Kimi CLI OAuth credentials are read from `~/.kimi/credentials/kimi-code.json` when `KIMI_API_KEY` is not set.
- `KIMI_API_KEY` takes precedence over OAuth credentials when present.
- `kimi-coding` supports both endpoints:
- `https://api.kimi.com/coding` via Anthropic Messages
- `https://api.kimi.com/coding/v1` via OpenAI Chat Completions
- Kimi CLI-compatible `X-Msh-*` headers and user-agent are applied to Kimi requests.
- Runtime provider resolution falls back to Kimi OAuth instead of silently producing `no-key-required`.
- Auxiliary Kimi calls refresh OAuth credentials on 401.
- Kimi K2.x context lengths are pinned to 262144 where needed and stale OpenRouter underreports are ignored for known providers.

### Verification

- Focused tests: `scripts/run_tests.sh tests/hermes_cli/test_runtime_provider_resolution.py tests/agent/test_model_metadata.py -q --tb=short`
- Kimi OAuth smoke: `hermes chat --provider kimi-coding -m kimi-k2.6 -q 'Say OK only.' -Q --yolo`

## 2026-05-11 — Kimi K2.6 context window bug

### Problem

Hermes rejected `kimi-k2.6` with a 32768-token context window even though the real context is 262144.

### Root cause

1. Provider mapping was incomplete for `kimi` / `moonshot` aliases.
2. Provider-unaware OpenRouter metadata could be consulted before curated Hermes defaults.

### Fix

- Added Kimi aliases to models.dev provider mapping.
- Added explicit Kimi K2.x context-length defaults.
- Kept provider-specific/curated context data ahead of provider-unaware OpenRouter fallback.

## 2026-05-09 — Multi-agent coding roster and Kanban hardening

### Profiles

- `riqui`: DeepSeek v4-flash, surgical Kanban worker.
- `miki`: Kimi K2.6 via `kimi-coding` OAuth.
- `maxi`: MiniMax provider, Anthropic Messages endpoint.
- `compaii`: architecture/research profile.

### Kanban fixes

- Kanban worker tasks require explicit `toolsets` in task specs.
- `kanban review create` flow validated end-to-end.
- Auto-specify triage was added for malformed task specs.
- Dispatcher self-spawn risk remains important: tasks assigned to the gateway's own profile must stay in `todo`/`triage` until intentionally claimed.

## 2026-05-08 — Upstream sync v2026.5.7

- Rebased fork work onto upstream main at the time.
- Preserved local fork features.
- Split gateway service handling between CompAII and profile-specific gateway instances.
110 changes: 110 additions & 0 deletions FORK_WORKFLOW.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
# Fork Workflow — nicoechaniz/hermes-agent

This repository is Nicolás' Hermes Agent fork. It intentionally carries local features that may or may not be upstreamed. Keep this file current whenever the branch topology changes.

## Branch roles

| Branch | Role | Rules |
|--------|------|-------|
| `upstream/main` | NousResearch upstream | Read-only reference. Fetch from `https://github.com/NousResearch/hermes-agent.git`. |
| `nousmain` | Local mirror of upstream main | Must match `upstream/main` exactly after each upstream sync. Do not commit directly. |
| `main` | Integration branch for our runtime | Merge `nousmain` plus all active canonical feature branches. This is what gets deployed to `~/.hermes/hermes-agent`. |
| `feat/*` / `fix/*` | Canonical fork features/fixes | Branch from `nousmain`, not from `main`, unless explicitly creating a short-lived integration/docs cleanup branch. Each branch must apply cleanly over `nousmain`. |
| `backup/*` / `*-legacy` | Safety archives | Do not merge. Keep only while useful for recovery. |

## Current canonical feature branches

These are the active branches we intentionally preserve as separable patches over `nousmain`:

| Branch | Purpose | Notes |
|--------|---------|-------|
| `feat/kimi` | Kimi support and corrections | Kimi CLI OAuth from `~/.kimi/credentials/kimi-code.json`; `X-Msh-*` headers; runtime credential resolution; Kimi OAuth refresh on auxiliary 401; Kimi K2.x context-length fixes. This replaces the old `feat/kimi-oauth-clean*` and `fix/kimi-context-length-resolution` branches. |
| `feat/daemoncraft` | DaemonCraft gateway / embodied-agent integration | Canonical DaemonCraft patch set. Keep clean over `nousmain`; old messy history lives only in `feat/daemoncraft-legacy` / backups. |
| `feat/minimax-defaults` | MiniMax defaults | Provider defaults for MiniMax Anthropic Messages transport and base URL behavior. |
| `feat/kanban-review` | Kanban review orchestration | Review graph/templates/CLI wiring for `hermes kanban review`. |
| `feat/altermundi-cli` | CLI input / interrupt behavior | Ctrl+C priority, interrupt transcript safety, multimodal requeue, TUI config support. |
| `feat/altermundi-tui` | TUI history behavior | History navigation behavior in the Ink TUI. |

If a branch is superseded, delete the remote branch after the replacement is merged and verified. Leave a local `backup/*` branch only when recent recovery is useful.

## Sync workflow

Before any push or pull, verify remotes:

```bash
git remote -v
```

Update the upstream mirror:

```bash
git fetch upstream main
git checkout nousmain
git reset --hard upstream/main
```

Rebuild each canonical feature branch on top of the new `nousmain`:

```bash
git checkout feat/kimi
git rebase nousmain
# resolve conflicts, run focused tests, then push:
git push origin feat/kimi --force-with-lease
```

Repeat for each active canonical branch. Do not rebase `main` onto feature branches; `main` is rebuilt by merging branches.

Rebuild integration `main`:

```bash
git checkout main
git reset --hard nousmain
git merge --no-ff feat/kimi
git merge --no-ff feat/daemoncraft
git merge --no-ff feat/minimax-defaults
git merge --no-ff feat/kanban-review
git merge --no-ff feat/altermundi-cli
git merge --no-ff feat/altermundi-tui
```

Run tests before pushing. Use the wrapper, never raw `pytest`:

```bash
scripts/run_tests.sh
```

For provider-specific fixes, add an end-to-end smoke test when credentials are available. Example for Kimi OAuth:

```bash
hermes chat --provider kimi-coding -m kimi-k2.6 -q 'Say OK only.' -Q --yolo
```

Push and deploy:

```bash
git push origin main
git -C ~/.hermes/hermes-agent fetch origin main
git -C ~/.hermes/hermes-agent reset --hard origin/main
```

If the gateway is running and the change affects gateway/runtime behavior, restart the relevant service after deployment.

## Rebirth sync coupling

Fork sync and CompAII rebirth sync go together. After a meaningful Hermes fork sync or deploy, also run the rebirth sync from the CompAII state repository:

```bash
python ~/Projects/compaii-state/sync.py
```

## Verification checklist

Before declaring a branch/workflow update complete:

1. `git remote -v` confirms `origin` and `upstream`.
2. `git status --short --branch` is clean.
3. Every canonical feature branch is either rebased onto `nousmain` or explicitly documented as pending rebase.
4. `main` contains every canonical active branch.
5. Superseded remote branches are deleted or clearly documented as archives.
6. Tests relevant to the changed areas pass via `scripts/run_tests.sh`.
7. Deployed checkout `~/.hermes/hermes-agent` matches `origin/main` when runtime behavior changed.
Loading