feat: migrate CTO, DevOps, Research agents from claude_local to hermes_local#23
Open
madhavikodale wants to merge 6 commits into
Open
Conversation
…de output
- Add parseJsonLenient() utility for extracting JSON from mixed text/code blocks
- Add extractResultFromMixedOutput() to find result objects in Claude output
- Fix EPIPE crash by using stdin.on('error') + callback-style write()
- Treat exit-code-0 + parse failure as inferred success in claude-local
Fixes OpenScanAI#16
…rsing - Add parseJsonLenient() tests in adapter-utils (9 cases) - Add parseClaudeStreamJson() tests in claude-local (8 cases) - Add runChildProcess EPIPE handling tests (2 cases) - Update CHANGELOGs for adapter-utils and claude-local - All 61 targeted tests pass; pnpm -r typecheck clean
…s_local - Add hermes_local to AGENT_ADAPTER_TYPES constant in packages/shared - Add Kimi K2.5 model to hermes adapter models list in server registry - Create DB migration 0087 to switch adapter_type and config for cto/devops/researcher roles - Add hermes_local default rules (timeoutSec, graceSec, persistSession) to company portability - Treat hermes_local as a local-trusted adapter in environment execution target - Add hermes_local feedback trace bundle support Closes OpenScanAI#22
…ct crash The Layout component was calling closeOnboarding() without importing it from useDialogActions(), causing a ReferenceError that crashed React and left the dashboard as a black screen. - Destructure closeOnboarding from useDialogActions() - Keeps the onboarding auto-close effect intact
Includes: - Dashboard type updates - Heartbeat service improvements - Recovery service enhancements - Work-products service additions - Workspace runtime updates - UI API and page updates - Dependency updates (pnpm-lock, package.json) - Various restore scripts and design artifacts
When all retry metrics are zero, show a compact collapsible card instead of full metric grids and empty charts. Reduces dashboard noise and keeps focus on actionable information. - Collapsible header shows 'All systems healthy' status - Expandable info section explains what retries are - Mini muted metric placeholders in expanded view - Full metrics/charts/details only shown when retries > 0
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Thinking Path
Issue #22 requests migrating the CTO, DevOps, and Research agents from Claude Code (
claude_local) to Hermes runtime (hermes_local), using Kimi as the default model, while preserving Paperclip workflow compatibility and keeping all other agents functional.The Hermes adapter (
hermes-paperclip-adapter@0.2.0) is already built-in and supports local agent JWT, skills, and session persistence. The missing pieces were:hermes_localwas not in the sharedAGENT_ADAPTER_TYPESconstant (causing validation issues)hermes_localas a local-trusted adapterWhat Changed
hermes_localtoAGENT_ADAPTER_TYPESkimi-k2.5model to the Hermes adapter model listadapter_typefromclaude_local→hermes_localforcto,devops,researcherroles, setsmodel: kimi-k2.5,provider: kimi-coding, preserves existinginstructionsFilePath, mapscommand→hermesCommand, and carries forwardenv,cwd,extraArgs,promptTemplatehermes_localdefault config rules (timeoutSec: 300,graceSec: 10,persistSession: true)hermes_localas a local-trusted adapter (excluded from environment lease requirements, same asclaude_local)hermes_localfeedback trace bundle support for run diagnosticsVerification
cd server && pnpm typecheck✅cd packages/shared && pnpm typecheck✅cd server && npx vitest run src/__tests__/adapter-registry.test.ts(18/18 passed) ✅claude_localagents only)Risks
supportsInstructionsBundle(unlike Claude). Agents relying on bundled SOUL.md/HEARTBEAT.md/AGENTS.md injection must useinstructionsFilePathorpromptTemplateinstead. The migration preserves any existinginstructionsFilePath.hermesCommandpath resolution may differ from Claude Code CLI. The migration maps existingcommand→hermesCommandfor compatibility, but explicit paths may need manual verification post-deploy.~/.hermes/config.yaml. The migration explicitly setsmodel: kimi-k2.5inadapter_configto override this.Model Used
Checklist
doc/SPEC-implementation.mdCloses #22