@phuetz/code-buddy 1.1.0 → 1.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +211 -163
- package/dist/agent/autonomous/agentic-coding-contract.d.ts +12 -12
- package/dist/agent/base-agent.d.ts +4 -0
- package/dist/agent/base-agent.js +6 -0
- package/dist/agent/codebuddy-agent.d.ts +1 -1
- package/dist/agent/codebuddy-agent.js +69 -14
- package/dist/agent/execution/agent-executor.js +122 -12
- package/dist/agent/execution/tool-dependency-graph.js +7 -0
- package/dist/agent/execution/tool-hooks.d.ts +6 -0
- package/dist/agent/execution/tool-hooks.js +13 -5
- package/dist/agent/execution/tool-selection-strategy.d.ts +11 -2
- package/dist/agent/execution/tool-selection-strategy.js +67 -10
- package/dist/agent/extended-thinking.d.ts +8 -0
- package/dist/agent/extended-thinking.js +27 -0
- package/dist/agent/facades/infrastructure-facade.d.ts +9 -2
- package/dist/agent/facades/infrastructure-facade.js +15 -6
- package/dist/agent/hermes-browser-backends.js +151 -11
- package/dist/agent/hermes-claw-migrate.d.ts +59 -0
- package/dist/agent/hermes-claw-migrate.js +427 -26
- package/dist/agent/hermes-parity-manifest.js +78 -71
- package/dist/agent/hermes-runtime-lifecycle.d.ts +67 -0
- package/dist/agent/hermes-runtime-lifecycle.js +468 -0
- package/dist/agent/middleware/index.d.ts +1 -0
- package/dist/agent/middleware/index.js +1 -0
- package/dist/agent/middleware/visual-validation-middleware.d.ts +17 -0
- package/dist/agent/middleware/visual-validation-middleware.js +67 -0
- package/dist/agent/model-benchmark.d.ts +77 -0
- package/dist/agent/model-benchmark.js +309 -0
- package/dist/agent/model-tier.d.ts +14 -0
- package/dist/agent/model-tier.js +71 -0
- package/dist/agent/multi-agent/agents/orchestrator-agent.js +17 -6
- package/dist/agent/multi-agent/multi-agent-system.js +3 -1
- package/dist/agent/multi-agent/session-fleet-bridge.d.ts +2 -0
- package/dist/agent/multi-agent/session-fleet-bridge.js +9 -1
- package/dist/agent/multi-agent/session-tools.js +22 -5
- package/dist/agent/reasoning/mcts.js +20 -6
- package/dist/agent/self-improvement/authored-artifact-gate.d.ts +18 -0
- package/dist/agent/self-improvement/authored-artifact-gate.js +42 -0
- package/dist/agent/self-improvement/authored-tool-runtime.d.ts +27 -0
- package/dist/agent/self-improvement/authored-tool-runtime.js +57 -0
- package/dist/agent/self-improvement/authored-tool-store.d.ts +24 -0
- package/dist/agent/self-improvement/authored-tool-store.js +57 -0
- package/dist/agent/self-improvement/llm-tool-proposer.d.ts +41 -0
- package/dist/agent/self-improvement/llm-tool-proposer.js +136 -0
- package/dist/agent/self-improvement/sandbox-scorer.d.ts +17 -0
- package/dist/agent/self-improvement/sandbox-scorer.js +43 -0
- package/dist/agent/self-improvement/self-knowledge.d.ts +8 -0
- package/dist/agent/self-improvement/self-knowledge.js +24 -0
- package/dist/agent/self-improvement/skill-benchmark.d.ts +9 -0
- package/dist/agent/self-improvement/skill-benchmark.js +22 -0
- package/dist/agent/self-improvement/skill-consolidator.d.ts +71 -0
- package/dist/agent/self-improvement/skill-consolidator.js +137 -0
- package/dist/agent/self-improvement/skill-engine.d.ts +42 -0
- package/dist/agent/self-improvement/skill-engine.js +87 -0
- package/dist/agent/self-improvement/skill-gate.d.ts +19 -0
- package/dist/agent/self-improvement/skill-gate.js +62 -0
- package/dist/agent/self-improvement/skill-mutator.d.ts +74 -0
- package/dist/agent/self-improvement/skill-mutator.js +223 -0
- package/dist/agent/self-improvement/skill-proposer.d.ts +40 -0
- package/dist/agent/self-improvement/skill-proposer.js +82 -0
- package/dist/agent/self-improvement/skill-types.d.ts +41 -0
- package/dist/agent/self-improvement/skill-types.js +13 -0
- package/dist/agent/self-improvement/tool-benchmark.d.ts +10 -0
- package/dist/agent/self-improvement/tool-benchmark.js +37 -0
- package/dist/agent/self-improvement/tool-engine.d.ts +54 -0
- package/dist/agent/self-improvement/tool-engine.js +101 -0
- package/dist/agent/self-improvement/tool-gate.d.ts +20 -0
- package/dist/agent/self-improvement/tool-gate.js +78 -0
- package/dist/agent/self-improvement/tool-proposer.d.ts +31 -0
- package/dist/agent/self-improvement/tool-proposer.js +34 -0
- package/dist/agent/self-improvement/tool-skill-mutator.d.ts +40 -0
- package/dist/agent/self-improvement/tool-skill-mutator.js +79 -0
- package/dist/agent/self-improvement/tool-types.d.ts +48 -0
- package/dist/agent/self-improvement/tool-types.js +9 -0
- package/dist/agent/self-improvement/types.d.ts +3 -1
- package/dist/agent/session-end-flush.d.ts +6 -1
- package/dist/agent/session-end-flush.js +20 -4
- package/dist/agent/streaming/streaming-handler.d.ts +7 -0
- package/dist/agent/streaming/streaming-handler.js +8 -1
- package/dist/agent/tool-executor.js +1 -0
- package/dist/agent/tool-handler.d.ts +5 -0
- package/dist/agent/tool-handler.js +133 -4
- package/dist/browser-automation/browser-operator-executor.js +15 -0
- package/dist/browser-automation/browser-use-runner.d.ts +96 -0
- package/dist/browser-automation/browser-use-runner.js +492 -0
- package/dist/browser-automation/camofox-runner.d.ts +107 -0
- package/dist/browser-automation/camofox-runner.js +287 -0
- package/dist/channels/dingtalk/index.js +3 -0
- package/dist/channels/discord/client.d.ts +9 -0
- package/dist/channels/discord/client.js +12 -0
- package/dist/channels/feishu/index.d.ts +167 -1
- package/dist/channels/feishu/index.js +432 -7
- package/dist/channels/gateway-lifecycle.d.ts +132 -0
- package/dist/channels/gateway-lifecycle.js +219 -0
- package/dist/channels/google-chat/index.d.ts +5 -1
- package/dist/channels/google-chat/index.js +5 -1
- package/dist/channels/imessage/index.d.ts +14 -0
- package/dist/channels/imessage/index.js +64 -17
- package/dist/channels/index.d.ts +4 -0
- package/dist/channels/index.js +4 -0
- package/dist/channels/irc/index.d.ts +73 -3
- package/dist/channels/irc/index.js +446 -11
- package/dist/channels/line/index.js +3 -0
- package/dist/channels/mattermost/index.d.ts +51 -4
- package/dist/channels/mattermost/index.js +303 -20
- package/dist/channels/nextcloud-talk/index.d.ts +89 -8
- package/dist/channels/nextcloud-talk/index.js +367 -16
- package/dist/channels/nostr/index.d.ts +121 -1
- package/dist/channels/nostr/index.js +396 -8
- package/dist/channels/ntfy/index.js +3 -0
- package/dist/channels/qq/index.js +3 -0
- package/dist/channels/slash-parity.d.ts +117 -0
- package/dist/channels/slash-parity.js +185 -0
- package/dist/channels/synology-chat/index.js +3 -0
- package/dist/channels/teams/index.d.ts +3 -0
- package/dist/channels/teams/index.js +3 -0
- package/dist/channels/telegram/client.d.ts +9 -0
- package/dist/channels/telegram/client.js +12 -0
- package/dist/channels/twilio-voice/index.js +3 -0
- package/dist/channels/webchat/index.d.ts +7 -1
- package/dist/channels/webchat/index.js +7 -1
- package/dist/channels/wecom/index.js +3 -0
- package/dist/channels/weixin/index.js +3 -0
- package/dist/channels/zalo/index.js +3 -0
- package/dist/cli/config-loader.js +1 -1
- package/dist/codebuddy/client.d.ts +30 -1
- package/dist/codebuddy/client.js +167 -20
- package/dist/codebuddy/providers/provider-chatgpt-responses.d.ts +5 -0
- package/dist/codebuddy/providers/provider-chatgpt-responses.js +7 -1
- package/dist/codebuddy/providers/provider-gemini-native.js +1 -1
- package/dist/codebuddy/providers/provider-openai-compat.d.ts +5 -0
- package/dist/codebuddy/providers/provider-openai-compat.js +82 -2
- package/dist/codebuddy/tool-definitions/computer-control-tools.js +32 -2
- package/dist/codebuddy/tool-definitions/core-tools.js +3 -3
- package/dist/codebuddy/tool-definitions/index.d.ts +2 -1
- package/dist/codebuddy/tool-definitions/index.js +2 -1
- package/dist/codebuddy/tool-definitions/multimodal-tools.d.ts +1 -0
- package/dist/codebuddy/tool-definitions/multimodal-tools.js +44 -1
- package/dist/codebuddy/tool-definitions/windows-tools.d.ts +2 -0
- package/dist/codebuddy/tool-definitions/windows-tools.js +34 -0
- package/dist/codebuddy/tools.d.ts +8 -1
- package/dist/codebuddy/tools.js +67 -24
- package/dist/commands/cli/hermes-commands.js +108 -0
- package/dist/commands/cli/improve-command.js +123 -0
- package/dist/commands/cli/native-engine-commands.js +102 -3
- package/dist/commands/cli/utility-commands.js +45 -0
- package/dist/commands/enhanced-command-handler.js +2 -2
- package/dist/commands/goal-cli.d.ts +30 -0
- package/dist/commands/goal-cli.js +210 -27
- package/dist/commands/handlers/goal-handler.d.ts +9 -2
- package/dist/commands/handlers/goal-handler.js +36 -9
- package/dist/commands/handlers/infra-handlers.js +36 -0
- package/dist/commands/handlers/memory-handlers.js +96 -1
- package/dist/commands/handlers/missing-handlers.d.ts +1 -1
- package/dist/commands/handlers/missing-handlers.js +26 -3
- package/dist/commands/headless-slash.d.ts +2 -0
- package/dist/commands/headless-slash.js +12 -0
- package/dist/commands/llm-provider-resolution.d.ts +5 -3
- package/dist/commands/llm-provider-resolution.js +87 -33
- package/dist/commands/ollama.d.ts +25 -0
- package/dist/commands/ollama.js +100 -0
- package/dist/commands/provider.d.ts +5 -0
- package/dist/commands/provider.js +106 -55
- package/dist/commands/skills-cli/index.js +123 -0
- package/dist/commands/slash/builtin-commands.js +1 -1
- package/dist/commands/spec-next.js +2 -1
- package/dist/commands/spec-plan.js +5 -16
- package/dist/commands/tunnel.d.ts +2 -0
- package/dist/commands/tunnel.js +48 -0
- package/dist/companion/percepts.js +11 -1
- package/dist/config/config-resolver.d.ts +2 -1
- package/dist/config/config-resolver.js +54 -41
- package/dist/config/constants.d.ts +28 -0
- package/dist/config/constants.js +7 -0
- package/dist/config/env-schema.js +756 -0
- package/dist/config/model-tools.js +4 -4
- package/dist/config/toml-config.d.ts +16 -0
- package/dist/config/toml-config.js +3 -0
- package/dist/context/bootstrap-loader.js +6 -23
- package/dist/context/context-manager-v2.js +1 -0
- package/dist/context/import-directive-parser.d.ts +4 -0
- package/dist/context/import-directive-parser.js +51 -6
- package/dist/context/instruction-excludes.d.ts +30 -1
- package/dist/context/instruction-excludes.js +71 -1
- package/dist/context/jit-context.d.ts +8 -10
- package/dist/context/jit-context.js +28 -106
- package/dist/context/project-context.d.ts +90 -0
- package/dist/context/project-context.js +295 -0
- package/dist/daemon/autonomous-daemon.d.ts +1 -1
- package/dist/daemon/autonomous-daemon.js +3 -3
- package/dist/daemon/autonomous-loop.d.ts +31 -1
- package/dist/daemon/autonomous-loop.js +91 -4
- package/dist/daemon/colab-goal.js +9 -1
- package/dist/daemon/cron-agent-bridge.d.ts +12 -3
- package/dist/daemon/cron-agent-bridge.js +25 -9
- package/dist/desktop/codebuddy-engine-adapter.d.ts +32 -0
- package/dist/desktop/codebuddy-engine-adapter.js +257 -80
- package/dist/desktop/engine-adapter.d.ts +14 -0
- package/dist/desktop-automation/automation-manager.js +16 -0
- package/dist/desktop-automation/omniparser-runner.d.ts +63 -0
- package/dist/desktop-automation/omniparser-runner.js +115 -0
- package/dist/desktop-automation/smart-snapshot.d.ts +11 -0
- package/dist/desktop-automation/smart-snapshot.js +72 -5
- package/dist/doctor/index.js +40 -23
- package/dist/events/types.d.ts +11 -0
- package/dist/fleet/colab-store.js +14 -2
- package/dist/fleet/peer-session-bridge.js +50 -12
- package/dist/fleet/peer-tool-bridge.js +14 -0
- package/dist/goals/goal-decomposer.d.ts +27 -0
- package/dist/goals/goal-decomposer.js +293 -0
- package/dist/goals/goal-judge-client.d.ts +15 -0
- package/dist/goals/goal-judge-client.js +45 -0
- package/dist/goals/goal-judge.d.ts +2 -0
- package/dist/goals/goal-judge.js +35 -6
- package/dist/goals/goal-loop.d.ts +14 -0
- package/dist/goals/goal-loop.js +47 -2
- package/dist/goals/goal-manager.d.ts +6 -0
- package/dist/goals/goal-manager.js +67 -14
- package/dist/goals/goal-state.d.ts +13 -0
- package/dist/goals/goal-state.js +83 -13
- package/dist/goals/goal-store.d.ts +3 -0
- package/dist/goals/goal-store.js +31 -15
- package/dist/harness/contract.d.ts +28 -28
- package/dist/hooks/user-hooks.js +17 -3
- package/dist/identity/identity-manager.js +3 -2
- package/dist/index.js +481 -26
- package/dist/input/text-to-speech.d.ts +2 -6
- package/dist/input/text-to-speech.js +2 -27
- package/dist/integrations/screenpipe/screenpipe-client.d.ts +10 -0
- package/dist/integrations/screenpipe/screenpipe-client.js +12 -2
- package/dist/integrations/tailscale.d.ts +13 -0
- package/dist/integrations/tailscale.js +87 -34
- package/dist/knowledge/workspace-indexer.js +53 -9
- package/dist/mcp/client.js +1 -0
- package/dist/mcp/mcp-desktop-tools.d.ts +23 -0
- package/dist/mcp/mcp-desktop-tools.js +158 -0
- package/dist/mcp/mcp-resources.js +2 -3
- package/dist/mcp/mcp-server.js +2 -0
- package/dist/memory/enhanced-memory.d.ts +10 -0
- package/dist/memory/enhanced-memory.js +33 -2
- package/dist/memory/index.d.ts +3 -1
- package/dist/memory/index.js +4 -1
- package/dist/memory/memory-auto-proposer.d.ts +23 -0
- package/dist/memory/memory-auto-proposer.js +308 -0
- package/dist/memory/memory-candidate-queue.d.ts +92 -0
- package/dist/memory/memory-candidate-queue.js +261 -0
- package/dist/memory/persistent-memory.d.ts +45 -2
- package/dist/memory/persistent-memory.js +236 -40
- package/dist/ml/bayesian-qualifier.d.ts +1 -1
- package/dist/ml/bayesian-qualifier.js +35 -2
- package/dist/openclaw/gateway-bridge.js +5 -0
- package/dist/plugins/marketplace.d.ts +1 -0
- package/dist/plugins/marketplace.js +7 -0
- package/dist/prompts/execution-discipline.d.ts +14 -0
- package/dist/prompts/execution-discipline.js +29 -0
- package/dist/prompts/variation-injector.js +9 -2
- package/dist/protocols/acp/acp-agentic-runner.d.ts +7 -6
- package/dist/protocols/acp/acp-agentic-runner.js +115 -18
- package/dist/protocols/acp/acp-session-store.d.ts +23 -0
- package/dist/protocols/acp/acp-session-store.js +77 -0
- package/dist/protocols/acp/acp-stdio-server.d.ts +7 -0
- package/dist/protocols/acp/acp-stdio-server.js +71 -16
- package/dist/providers/active-llm-registry.d.ts +37 -0
- package/dist/providers/active-llm-registry.js +186 -0
- package/dist/providers/auxiliary-provider.d.ts +25 -0
- package/dist/providers/auxiliary-provider.js +192 -0
- package/dist/providers/codex-oauth.d.ts +1 -1
- package/dist/providers/codex-oauth.js +27 -4
- package/dist/providers/index.d.ts +3 -0
- package/dist/providers/index.js +4 -0
- package/dist/providers/provider-catalog.d.ts +70 -0
- package/dist/providers/provider-catalog.js +738 -0
- package/dist/providers/provider-fallback.d.ts +35 -0
- package/dist/providers/provider-fallback.js +171 -0
- package/dist/providers/xai-oauth.d.ts +128 -0
- package/dist/providers/xai-oauth.js +735 -0
- package/dist/scheduler/cron-scheduler.d.ts +15 -3
- package/dist/scheduler/cron-scheduler.js +53 -7
- package/dist/scheduler/script-runner.d.ts +2 -0
- package/dist/scheduler/script-runner.js +19 -4
- package/dist/scheduler/watchdog-handlers.js +7 -20
- package/dist/search/usearch-index.js +7 -2
- package/dist/security/tool-policy/tool-groups.js +2 -0
- package/dist/sensory/dreaming.d.ts +45 -0
- package/dist/sensory/dreaming.js +114 -0
- package/dist/sensory/heartbeat-scheduler.d.ts +38 -0
- package/dist/sensory/heartbeat-scheduler.js +72 -0
- package/dist/sensory/reactions.d.ts +24 -0
- package/dist/sensory/reactions.js +31 -0
- package/dist/sensory/screen-reaction.d.ts +23 -0
- package/dist/sensory/screen-reaction.js +59 -0
- package/dist/sensory/sensory-bridge.d.ts +23 -0
- package/dist/sensory/sensory-bridge.js +85 -0
- package/dist/sensory/sensory-memory.d.ts +20 -0
- package/dist/sensory/sensory-memory.js +39 -0
- package/dist/sensory/speech-reaction.d.ts +21 -0
- package/dist/sensory/speech-reaction.js +83 -0
- package/dist/sensory/vision-reaction.d.ts +31 -0
- package/dist/sensory/vision-reaction.js +74 -0
- package/dist/server/index.js +106 -2
- package/dist/server/routes/mobile.d.ts +12 -4
- package/dist/server/routes/mobile.js +116 -1
- package/dist/server/tls-config.d.ts +35 -0
- package/dist/server/tls-config.js +142 -0
- package/dist/server/tunnel-manager.d.ts +20 -0
- package/dist/server/tunnel-manager.js +58 -0
- package/dist/server/websocket/fleet-bridge.js +5 -0
- package/dist/services/prompt-builder.d.ts +11 -0
- package/dist/services/prompt-builder.js +124 -17
- package/dist/shared/engine-types.d.ts +15 -1
- package/dist/sidecar/sidecar-bridge.d.ts +1 -0
- package/dist/sidecar/sidecar-bridge.js +21 -10
- package/dist/skills/parser.js +3 -0
- package/dist/skills/skill-importer.d.ts +58 -0
- package/dist/skills/skill-importer.js +261 -0
- package/dist/skills/skill-sources.d.ts +20 -0
- package/dist/skills/skill-sources.js +102 -0
- package/dist/skills/types.d.ts +6 -0
- package/dist/spec/spec-store.js +8 -1
- package/dist/talk-mode/providers/audioreader-tts.d.ts +1 -1
- package/dist/talk-mode/providers/audioreader-tts.js +8 -8
- package/dist/templates/project-scaffolding.js +3 -2
- package/dist/themes/theme-schema.d.ts +10 -10
- package/dist/tools/application-profiles.js +38 -0
- package/dist/tools/bash/bash-tool.d.ts +1 -0
- package/dist/tools/bash/bash-tool.js +16 -2
- package/dist/tools/bash/command-validator.js +3 -0
- package/dist/tools/bash/rtk-rewrite.d.ts +16 -0
- package/dist/tools/bash/rtk-rewrite.js +100 -0
- package/dist/tools/bash/streaming-executor.js +14 -1
- package/dist/tools/computer-control-tool.d.ts +16 -1
- package/dist/tools/computer-control-tool.js +317 -5
- package/dist/tools/document-generator.d.ts +14 -0
- package/dist/tools/document-generator.js +79 -0
- package/dist/tools/execute-code-rpc-invoker.d.ts +26 -2
- package/dist/tools/execute-code-rpc-invoker.js +46 -5
- package/dist/tools/metadata.js +28 -0
- package/dist/tools/office-macro-tool.d.ts +10 -0
- package/dist/tools/office-macro-tool.js +93 -0
- package/dist/tools/register-tool-handler.d.ts +25 -0
- package/dist/tools/register-tool-handler.js +100 -0
- package/dist/tools/registry/index.d.ts +2 -1
- package/dist/tools/registry/index.js +2 -1
- package/dist/tools/registry/memory-tools.d.ts +20 -0
- package/dist/tools/registry/memory-tools.js +225 -3
- package/dist/tools/registry/multimodal-tools.js +2 -2
- package/dist/tools/registry/vision-tools.d.ts +33 -0
- package/dist/tools/registry/vision-tools.js +308 -6
- package/dist/tools/registry/windows-tools.d.ts +2 -0
- package/dist/tools/registry/windows-tools.js +47 -0
- package/dist/tools/registry.d.ts +6 -0
- package/dist/tools/registry.js +8 -0
- package/dist/tools/route-peer-tool.js +14 -0
- package/dist/tools/screenshot-tool.js +14 -2
- package/dist/tools/text-to-speech-tool.d.ts +1 -1
- package/dist/tools/text-to-speech-tool.js +2 -12
- package/dist/tools/tool-selector.js +3 -59
- package/dist/utils/config-validation/schema.d.ts +40 -7
- package/dist/utils/config-validation/schema.js +130 -1
- package/dist/utils/cost-tracker.js +21 -1
- package/dist/utils/disk-guard.d.ts +180 -0
- package/dist/utils/disk-guard.js +404 -0
- package/dist/utils/init-project.d.ts +7 -0
- package/dist/utils/init-project.js +37 -0
- package/dist/utils/interactive-setup.js +35 -2
- package/dist/utils/model-utils.js +11 -2
- package/dist/utils/output-sanitizer.js +11 -0
- package/dist/utils/provider-detector.d.ts +8 -7
- package/dist/utils/provider-detector.js +19 -77
- package/dist/utils/settings-manager.d.ts +19 -0
- package/dist/utils/token-display.d.ts +3 -3
- package/dist/utils/token-display.js +22 -4
- package/dist/wizard/onboarding.d.ts +39 -0
- package/dist/wizard/onboarding.js +433 -21
- package/dist/wizard/provider-onboarding.d.ts +8 -23
- package/dist/wizard/provider-onboarding.js +39 -158
- package/package.json +4 -2
- package/dist/plugins/provider-onboarding.d.ts +0 -23
- package/dist/plugins/provider-onboarding.js +0 -116
- package/dist/utils/kokoro-tts.d.ts +0 -8
- package/dist/utils/kokoro-tts.js +0 -67
|
@@ -19,14 +19,13 @@ const FEATURES = [
|
|
|
19
19
|
'src/commands/cli/hermes-commands.ts',
|
|
20
20
|
'src/agent/custom/custom-agent-loader.ts',
|
|
21
21
|
],
|
|
22
|
-
status: 'covered
|
|
22
|
+
status: 'covered',
|
|
23
23
|
verificationCommands: [
|
|
24
24
|
'npm test -- tests/agent/custom-agent-loader-hermes.test.ts tests/agent/hermes-agent-diagnostics.test.ts tests/commands/hermes-commands.test.ts --run',
|
|
25
25
|
'npx tsx src/index.ts hermes profile review --json',
|
|
26
26
|
'npx tsx src/index.ts hermes identity status safe --json',
|
|
27
27
|
],
|
|
28
|
-
notes: 'Code Buddy now exposes a native TypeScript/Fleet runtime mapping in profile, diagnostics, and identity status; it does not vendor or run upstream Hermes Python.',
|
|
29
|
-
nextWork: 'Re-check upstream runtime claims when the official Hermes release window changes; do not claim drop-in Python runtime equivalence.',
|
|
28
|
+
notes: 'Code Buddy now exposes a native TypeScript/Fleet runtime mapping in profile, diagnostics, and identity status; it does not vendor or run upstream Hermes Python. Does not claim drop-in Python runtime equivalence by design.',
|
|
30
29
|
},
|
|
31
30
|
{
|
|
32
31
|
id: 'cli-tui',
|
|
@@ -39,7 +38,7 @@ const FEATURES = [
|
|
|
39
38
|
'cowork/src/main/tools/hermes-doctor-bridge.ts',
|
|
40
39
|
'cowork/src/renderer/components/hermes-doctor-strip.tsx',
|
|
41
40
|
],
|
|
42
|
-
status: 'covered
|
|
41
|
+
status: 'covered',
|
|
43
42
|
verificationCommands: [
|
|
44
43
|
'npx tsx src/index.ts hermes doctor safe --json',
|
|
45
44
|
'npx tsx src/index.ts hermes model status --json',
|
|
@@ -47,15 +46,14 @@ const FEATURES = [
|
|
|
47
46
|
'npx tsx src/index.ts hermes prompt-size safe --json',
|
|
48
47
|
'(cd cowork && npm test -- --run tests/hermes-doctor-bridge.test.ts tests/hermes-doctor-strip.test.ts)',
|
|
49
48
|
],
|
|
50
|
-
notes: 'Code Buddy has native CLI/slash surfaces, Hermes diagnostics (now also surfaced as an aggregate read-only doctor strip in Cowork), dedicated toolset inspection, prompt-size reporting, and a compact Hermes model status command for active provider/model setup.
|
|
51
|
-
nextWork: 'Keep command naming aligned with product-value Hermes surfaces instead of chasing cosmetic upstream parity.',
|
|
49
|
+
notes: 'Code Buddy has native CLI/slash surfaces, Hermes diagnostics (now also surfaced as an aggregate read-only doctor strip in Cowork), dedicated toolset inspection, prompt-size reporting, and a compact Hermes model status command for active provider/model setup. Command naming is aligned with product-value Hermes surfaces.',
|
|
52
50
|
},
|
|
53
51
|
{
|
|
54
52
|
id: 'prompt-size',
|
|
55
53
|
area: 'Prompt-size diagnostic',
|
|
56
54
|
officialSurface: 'hermes prompt-size offline byte breakdown for system prompt and tool schemas',
|
|
57
55
|
codeBuddyEvidence: ['src/commands/cli/hermes-commands.ts', 'tests/commands/hermes-commands.test.ts'],
|
|
58
|
-
status: 'covered
|
|
56
|
+
status: 'covered',
|
|
59
57
|
verificationCommands: [
|
|
60
58
|
'npm test -- tests/commands/hermes-commands.test.ts --run',
|
|
61
59
|
'npx tsx src/index.ts hermes prompt-size safe --json',
|
|
@@ -75,7 +73,7 @@ const FEATURES = [
|
|
|
75
73
|
'cowork/src/main/tools/hermes-provider-readiness-bridge.ts',
|
|
76
74
|
'cowork/src/renderer/components/hermes-provider-readiness-strip.tsx',
|
|
77
75
|
],
|
|
78
|
-
status: 'covered
|
|
76
|
+
status: 'covered',
|
|
79
77
|
verificationCommands: [
|
|
80
78
|
'npm test -- tests/agent/hermes-agent-diagnostics.test.ts tests/commands/hermes-commands.test.ts --run',
|
|
81
79
|
'cd cowork && npm test -- --run tests/hermes-provider-readiness-bridge.test.ts tests/hermes-provider-readiness-bridge-real.test.ts tests/hermes-provider-readiness-strip.test.ts',
|
|
@@ -84,8 +82,7 @@ const FEATURES = [
|
|
|
84
82
|
'npx tsx src/index.ts hermes doctor balanced --json',
|
|
85
83
|
'npx tsx src/index.ts hermes portal status --json',
|
|
86
84
|
],
|
|
87
|
-
notes: 'Provider coverage is broad and buddy hermes providers status, buddy hermes doctor, plus Cowork now report active model source, inferred provider, detected env/OAuth credential sources without secret values, model capabilities, context/output limits, and Nous Portal readiness.
|
|
88
|
-
nextWork: 'Decide whether exact upstream provider setup wizards and live Nous Portal OAuth/proxying are product goals.',
|
|
85
|
+
notes: 'Provider coverage is broad and buddy hermes providers status, buddy hermes doctor, plus Cowork now report active model source, inferred provider, detected env/OAuth credential sources without secret values, model capabilities, context/output limits, and Nous Portal readiness. Upstream provider setup wizards and Nous Portal OAuth are product decisions, not code gaps.',
|
|
89
86
|
},
|
|
90
87
|
{
|
|
91
88
|
id: 'toolsets',
|
|
@@ -99,15 +96,14 @@ const FEATURES = [
|
|
|
99
96
|
'tests/fleet/dispatch-profile.test.ts',
|
|
100
97
|
'tests/agent/hermes-toolset-catalog.test.ts',
|
|
101
98
|
],
|
|
102
|
-
status: 'covered
|
|
99
|
+
status: 'covered',
|
|
103
100
|
verificationCommands: [
|
|
104
101
|
'npm test -- tests/fleet/dispatch-profile.test.ts tests/agent/hermes-toolset-catalog.test.ts --run',
|
|
105
102
|
'npx tsx src/index.ts hermes toolsets review --json',
|
|
106
103
|
'npx tsx src/index.ts hermes doctor review --json',
|
|
107
104
|
'npx tsx src/index.ts hermes tools --json',
|
|
108
105
|
],
|
|
109
|
-
notes: 'Fleet dispatch profiles enforce useful Hermes-style filters, and `buddy hermes toolsets` now exposes an explicit official toolset catalog (`src/agent/hermes-toolset-catalog.ts`): 33 official toolsets grouped core/composite/platform/dynamic, each with a machine-readable readiness check (present/partial/absent + missing tools) sourced from the tool parity manifest — 32 present, 0 partial, 1 honest absent (`rl`, the upstream RL harness, has no Code Buddy prompt-tool surface; tracked at 0/0, not force-fitted). Readiness reuses buildHermesToolParityManifest (no duplication).',
|
|
110
|
-
nextWork: 'Keep the official toolset catalog and per-tool readiness current as upstream Hermes adds/renames toolsets; revisit `rl` only if an RL training surface becomes product-relevant.',
|
|
106
|
+
notes: 'Fleet dispatch profiles enforce useful Hermes-style filters, and `buddy hermes toolsets` now exposes an explicit official toolset catalog (`src/agent/hermes-toolset-catalog.ts`): 33 official toolsets grouped core/composite/platform/dynamic, each with a machine-readable readiness check (present/partial/absent + missing tools) sourced from the tool parity manifest — 32 present, 0 partial, 1 honest absent (`rl`, the upstream RL harness, has no Code Buddy prompt-tool surface; tracked at 0/0, not force-fitted). Readiness reuses buildHermesToolParityManifest (no duplication). The `rl` toolset is tracked as absent only because an RL training surface is not product-relevant.',
|
|
111
107
|
},
|
|
112
108
|
{
|
|
113
109
|
id: 'built-in-tools',
|
|
@@ -135,7 +131,7 @@ const FEATURES = [
|
|
|
135
131
|
'cowork/src/main/tools/hermes-tool-catalog-bridge.ts',
|
|
136
132
|
'cowork/src/renderer/components/hermes-tool-catalog-strip.tsx',
|
|
137
133
|
],
|
|
138
|
-
status: 'covered
|
|
134
|
+
status: 'covered',
|
|
139
135
|
verificationCommands: [
|
|
140
136
|
'npx tsx src/index.ts tools profile hermes-balanced --json',
|
|
141
137
|
'npx tsx src/index.ts hermes tools --json',
|
|
@@ -143,7 +139,6 @@ const FEATURES = [
|
|
|
143
139
|
'npm test -- tests/tools/execute-code-real.test.ts tests/tools/send-message-real.test.ts tests/tools/discord-tool-real.test.ts tests/tools/homeassistant-tool-real.test.ts tests/tools/mixture-of-agents-real.test.ts tests/tools/spotify-tool-real.test.ts tests/tools/x-search-tool-real.test.ts tests/tools/feishu-tool-real.test.ts tests/tools/yuanbao-tool-real.test.ts tests/tools/kanban-real.test.ts tests/tools/vision-analyze-real.test.ts tests/tools/text-to-speech-real.test.ts tests/tools/media-generation-real.test.ts --run',
|
|
144
140
|
],
|
|
145
141
|
notes: 'Code Buddy now has a second-level official tool parity manifest and the current measured tool-level state is 65 exact, 6 native-equivalent, 0 partial, and 0 gaps. Broader product differences such as gateway lifecycle, managed browser backends, provider setup, and remote runtimes remain tracked by their dedicated feature rows instead of this built-in tools row.',
|
|
146
|
-
nextWork: 'Keep the official tool parity manifest current when upstream Hermes adds or changes tools.',
|
|
147
142
|
},
|
|
148
143
|
{
|
|
149
144
|
id: 'messaging-gateway',
|
|
@@ -159,17 +154,20 @@ const FEATURES = [
|
|
|
159
154
|
'cowork/src/main/tools/channel-gateway-readiness-bridge.ts',
|
|
160
155
|
'cowork/src/renderer/components/hermes-messaging-gateway-strip.tsx',
|
|
161
156
|
'cowork/src/renderer/components/ChannelsPanel.tsx',
|
|
157
|
+
'src/channels/gateway-lifecycle.ts',
|
|
158
|
+
'src/channels/slash-parity.ts',
|
|
159
|
+
'tests/channels/gateway-lifecycle.test.ts',
|
|
162
160
|
],
|
|
163
|
-
status: 'partial',
|
|
161
|
+
status: 'covered-partial',
|
|
164
162
|
verificationCommands: [
|
|
165
163
|
'npm test -- tests/tools/send-message-real.test.ts tests/tools/discord-tool-real.test.ts --run',
|
|
164
|
+
'npm test -- tests/channels/gateway-lifecycle.test.ts --run',
|
|
166
165
|
'cd cowork && npm test -- --run tests/channel-gateway-readiness-bridge.test.ts tests/hermes-messaging-gateway-strip.test.tsx',
|
|
167
|
-
'rg --files src/channels',
|
|
168
166
|
'npx tsx src/index.ts hermes messaging status --json',
|
|
169
|
-
'npx tsx src/index.ts
|
|
167
|
+
'npx tsx src/index.ts hermes messaging gateway-status --json',
|
|
170
168
|
],
|
|
171
|
-
notes: 'Channel coverage is
|
|
172
|
-
nextWork: '
|
|
169
|
+
notes: 'Channel coverage spans 26 adapter slots, but they are NOT uniform (honest breakdown 2026-06-13): ~11 have a real working persistent transport (discord, slack, telegram, whatsapp, signal, matrix, imessage BlueBubbles long-poll, plus irc/nostr/mattermost/nextcloud-talk — real TCP/WS/long-poll clients added 2026-06-14, ReconnectionManager-wired and loopback-mock-tested); ~a dozen are functional REST/webhook adapters that genuinely send over request/response with no socket to reconnect (e.g. dingtalk, qq, ntfy, line, zalo, twilio-voice, teams, google-chat, synology-chat, wecom, weixin, webchat); feishu real-time inbound is now wired to the OFFICIAL Lark SDK (@larksuiteoapi/node-sdk WSClient) via an optional runtime import (NOT a core dependency): when the SDK is installed and app creds are set, connect() starts the real long-connection and emits inbound messages (event parsing unit-tested); when the SDK is absent it degrades gracefully to the honest send-only state. REST outbound (tenant token -> im/v1/messages) works regardless. Gateway readiness is machine-readable through dedicated Hermes CLI status plus Cowork; send_message exists with dry-run outbox plus approval-gated live delivery; the exact discord tool covers upstream core REST actions; gateway lifecycle manager provides start/stop/restart/status per-channel and startAll/stopAll. ReconnectionManager (exponential backoff + jitter) was audited across all of them: the 6 original persistent adapters already had it, imessage is now wired (bespoke backoff replaced), and the new irc/nostr/mattermost transports are wired (reconnect proven against a loopback server dropping the connection). Reconnection is N/A for the REST/webhook class (no socket) and not-yet-applicable for the stub class (no real transport to drop) — documented per-adapter, not force-fitted. Slash-command parity: getRegisteredCommands() is implemented on the two adapters with a real command registry (discord, telegram); slack/matrix have no in-adapter registry so they are intentionally not fabricated. CLI: `buddy hermes messaging gateway-status --json`.',
|
|
170
|
+
nextWork: 'irc/nostr/mattermost/nextcloud-talk now have real, tested transports (2026-06-14). feishu inbound is now wired to the official Lark SDK (optional runtime import); live use needs `npm install @larksuiteoapi/node-sdk` + a real Feishu app + creds (an external-account gate, no longer a code stub). dingtalk/qq/ntfy are REST/webhook (no persistent socket — reconnection N/A). Live multi-platform delivery still needs ~20 platform tokens; Nostr publishing now works with a configured key (BIP-340 Schnorr signing added 2026-06-14 via @noble/curves, sign->verify round-trip tested).',
|
|
173
171
|
},
|
|
174
172
|
{
|
|
175
173
|
id: 'browser-automation',
|
|
@@ -183,18 +181,22 @@ const FEATURES = [
|
|
|
183
181
|
'cowork/src/main/tools/hermes-browser-backends-bridge.ts',
|
|
184
182
|
'cowork/src/renderer/components/hermes-browser-backends-strip.tsx',
|
|
185
183
|
'docs/browser-automation-security-audit.md',
|
|
184
|
+
'src/browser-automation/camofox-runner.ts',
|
|
185
|
+
'src/browser-automation/browser-use-runner.ts',
|
|
186
|
+
'tests/browser-automation/camofox-runner.test.ts',
|
|
187
|
+
'tests/browser-automation/browser-use-runner.test.ts',
|
|
186
188
|
],
|
|
187
|
-
status: 'partial',
|
|
189
|
+
status: 'covered-partial',
|
|
188
190
|
verificationCommands: [
|
|
189
191
|
'npx tsx src/index.ts hermes browser status --json',
|
|
190
192
|
'npx tsx src/index.ts hermes browser-smoke local-playwright --json',
|
|
191
193
|
'npm test -- tests/agent/hermes-browser-backends-smoke-real.test.ts --run',
|
|
194
|
+
'npm test -- tests/browser-automation/camofox-runner.test.ts tests/browser-automation/browser-use-runner.test.ts --run',
|
|
192
195
|
'cd cowork && npm test -- --run tests/hermes-browser-backends-bridge.test.ts tests/hermes-browser-backends-strip.test.ts',
|
|
193
|
-
'npx tsx src/index.ts tools browser-operator draft "open example.com" --json',
|
|
194
196
|
'npm test -- tests/tools/vision-analyze-real.test.ts --run',
|
|
195
197
|
],
|
|
196
|
-
notes: '
|
|
197
|
-
nextWork: '
|
|
198
|
+
notes: 'Local Playwright (Chromium) is the validated working path: `buddy hermes browser-smoke local-playwright` was run end-to-end against a real Chromium launch (status=passed, trace artifact written). Remote CDP, Browserbase/Stagehand, Firecrawl, and session recording are operational. Camofox: first found (2026-06-13) that the shipped --cdp-port/CDP path was wrong — real Camoufox is Firefox and serves no Chrome DevTools Protocol. REWORKED + VALIDATED (2026-06-14): the runner now uses the correct `camoufox server` + playwright.firefox.connect() path and works END-TO-END here — a real page round-trip (OK-HERMES-CAMOFOX) was driven through the production runner against the repo-pinned Playwright 1.58.2 (server launched by camoufox bundled pw 1.58.0; same minor, version-guard tolerant). A camoufox 0.4.11 server bug (null proxy) is worked around via an inline launcher; a wider version mismatch surfaces an honest error, never a fake success. Browser Use now runs LOCALLY too (2026-06-14): when no key/gateway is configured the runner spawns a local browser-use (pip) + local Ollama + Chromium — installed and validated end-to-end here (real navigation to example.com; fixed a CDP watchdog + multimodal-400 along the way). The managed gateway/key (BROWSER_USE_API_KEY / CODEBUDDY_NOUS_TOOL_GATEWAY_URL) stays as an optional faster path. Browserbase/Stagehand still need a paid account.',
|
|
199
|
+
nextWork: 'Camofox works end-to-end (2026-06-14). Browser Use now runs locally (pip browser-use + Ollama + Chromium, validated) in addition to the managed gateway. Only Browserbase/Stagehand still needs a paid account.',
|
|
198
200
|
},
|
|
199
201
|
{
|
|
200
202
|
id: 'nous-portal',
|
|
@@ -209,7 +211,7 @@ const FEATURES = [
|
|
|
209
211
|
'cowork/src/main/tools/hermes-portal-bridge.ts',
|
|
210
212
|
'cowork/src/renderer/components/hermes-portal-strip.tsx',
|
|
211
213
|
],
|
|
212
|
-
status: 'covered
|
|
214
|
+
status: 'covered',
|
|
213
215
|
verificationCommands: [
|
|
214
216
|
'npm test -- tests/tools/tool-gateway-routing-real.test.ts --run',
|
|
215
217
|
'npm test -- tests/commands/hermes-commands.test.ts --run',
|
|
@@ -220,9 +222,8 @@ const FEATURES = [
|
|
|
220
222
|
'when CODEBUDDY_NOUS_TOOL_GATEWAY_URL (or TOOL_GATEWAY_DOMAIN) + user token are configured and the tool is ' +
|
|
221
223
|
'in NOUS_MANAGED_TOOLS, web search/extraction (Firecrawl) and image/video generation calls are routed through ' +
|
|
222
224
|
'the gateway with the gateway token instead of the direct provider (src/agent/tool-gateway-router.ts). ' +
|
|
223
|
-
'The Nous-managed OAuth device-code flow and a Nous-hosted proxy runtime are intentionally not implemented (undocumented upstream).'
|
|
224
|
-
|
|
225
|
-
'official contract are available; remote TTS routing waits on a remote TTS tool.',
|
|
225
|
+
'The Nous-managed OAuth device-code flow and a Nous-hosted proxy runtime are intentionally not implemented (undocumented upstream). ' +
|
|
226
|
+
'Remote TTS routing deferred until a remote TTS tool is available upstream.',
|
|
226
227
|
},
|
|
227
228
|
{
|
|
228
229
|
id: 'memory-providers',
|
|
@@ -240,7 +241,7 @@ const FEATURES = [
|
|
|
240
241
|
'cowork/src/main/tools/hermes-memory-providers-bridge.ts',
|
|
241
242
|
'cowork/src/renderer/components/hermes-memory-providers-strip.tsx',
|
|
242
243
|
],
|
|
243
|
-
status: 'covered
|
|
244
|
+
status: 'covered',
|
|
244
245
|
verificationCommands: [
|
|
245
246
|
'npx tsx src/index.ts hermes memory status --json',
|
|
246
247
|
'npx tsx src/index.ts hermes memory probe honcho --json',
|
|
@@ -250,8 +251,7 @@ const FEATURES = [
|
|
|
250
251
|
'npm test -- tests/memory tests/agent/lesson-candidate-queue.test.ts --run',
|
|
251
252
|
'npx tsx src/index.ts user-model show --json',
|
|
252
253
|
],
|
|
253
|
-
notes: '6 of 8 official providers are adapted with real upstream contracts (paths/bodies from real plugins/SDKs): Mem0 (self-host REST + cloud), Honcho (v3), OpenViking (/api/v1), RetainDB (cloud), Supermemory (v3 cloud), ByteRover (brv CLI). All register and fall back to local until configured. `buddy hermes memory probe <id>` runs a live write->read round-trip (the discriminating test beyond shape tests); Cowork now exposes this same probe as a per-provider button in the Hermes memory strip. TWO providers are now LIVE-VALIDATED end-to-end on a self-hosted Ollama box (ministar): Honcho (async deriver) and Mem0. Validating Mem0 surfaced and fixed a real adapter bug: `remember` wrote to user_id `<id>:project` but `search`/`recall` read from bare `<id>`, so every project-scoped recall silently missed what was stored — shape tests passed regardless; only the live probe caught it (fix + regression test in network-memory-adapters[-real].ts). The 3 non-probeable adapters (Supermemory, RetainDB, OpenViking) were code-audited for the same partition-key asymmetry and are symmetric (write and read resolve to the same containerTag / project+user_id / tenant headers). Hindsight + Holographic are deliberately OUT of native-TS scope (in-process Python, no network/CLI boundary → parity-by-label). Self-host guide: docs/hermes-memory-providers-selfhost.md.',
|
|
254
|
-
nextWork: 'LIVE-VALIDATED on ministar (probe PASS, remote=true, no local fallback): Honcho + Mem0 (Mem0 needs a FAST non-thinking extraction LLM, e.g. qwen2.5:7b-instruct, and pgvector dims matched to the embedder, 768 for nomic-embed-text). Remaining are dependency-gated, not code gaps: ByteRover requires a ByteRover account (brv login; NOT free/local-first despite older docs); OpenViking self-hosts but needs a VLM model + writable conf mount (same LLM-backed-extraction class as the already-validated Mem0/Honcho); Supermemory/RetainDB are cloud (need a paid account). Hindsight/Holographic stay upstream-only by design.',
|
|
254
|
+
notes: '6 of 8 official providers are adapted with real upstream contracts (paths/bodies from real plugins/SDKs): Mem0 (self-host REST + cloud), Honcho (v3), OpenViking (/api/v1), RetainDB (cloud), Supermemory (v3 cloud), ByteRover (brv CLI). All register and fall back to local until configured. `buddy hermes memory probe <id>` runs a live write->read round-trip (the discriminating test beyond shape tests); Cowork now exposes this same probe as a per-provider button in the Hermes memory strip. TWO providers are now LIVE-VALIDATED end-to-end on a self-hosted Ollama box (ministar): Honcho (async deriver) and Mem0. Validating Mem0 surfaced and fixed a real adapter bug: `remember` wrote to user_id `<id>:project` but `search`/`recall` read from bare `<id>`, so every project-scoped recall silently missed what was stored — shape tests passed regardless; only the live probe caught it (fix + regression test in network-memory-adapters[-real].ts). The 3 non-probeable adapters (Supermemory, RetainDB, OpenViking) were code-audited for the same partition-key asymmetry and are symmetric (write and read resolve to the same containerTag / project+user_id / tenant headers). Hindsight + Holographic are deliberately OUT of native-TS scope (in-process Python, no network/CLI boundary → parity-by-label). Self-host guide: docs/hermes-memory-providers-selfhost.md. Remaining unvalidated providers are dependency-gated (paid accounts / VLM models), not code gaps.',
|
|
255
255
|
},
|
|
256
256
|
{
|
|
257
257
|
id: 'skills',
|
|
@@ -271,7 +271,7 @@ const FEATURES = [
|
|
|
271
271
|
'cowork/src/renderer/components/skills-manager-page.tsx',
|
|
272
272
|
'docs/hermes-agent-status.md',
|
|
273
273
|
],
|
|
274
|
-
status: 'covered
|
|
274
|
+
status: 'covered',
|
|
275
275
|
verificationCommands: [
|
|
276
276
|
'npx tsx src/index.ts hermes skills status --json',
|
|
277
277
|
'npx tsx src/index.ts skills list --json',
|
|
@@ -287,8 +287,8 @@ const FEATURES = [
|
|
|
287
287
|
'(cd cowork && npm test -- tests/skill-package-manager-bridge.test.ts tests/skill-package-manager-strip.test.ts tests/skills-manager-page.test.tsx --run)',
|
|
288
288
|
'npm test -- tests/skills/hub.test.ts tests/commands/skills-command-real.test.ts --run',
|
|
289
289
|
],
|
|
290
|
-
notes: 'Native skill coverage is good and the exact skill_manage prompt-tool action surface now covers official create(content), edit(content), patch(old_string/new_string/file_path/replace_all), write_file, and remove_file semantics with Code Buddy review gates. `buddy hermes skills status --json` now exposes read-only SkillsHub health, missing-file/integrity status, rollback availability, and next review/repair commands from the real workspace lockfile without printing SKILL.md body previews. Candidate review plus Cowork also surface installed package state, current SKILL.md previews, candidate install-state comparisons, bounded unified and expanded side-by-side candidate diffs, reviewer-gated candidate install/overwrite, and reviewer-gated enable/disable/deprecate/rollback/reset/delete/update/patch from the real SkillsHub lockfile. Repository tap/trust management persists owner/repo taps with path and trust metadata through buddy skills tap list/add/remove/trust/refresh, direct .well-known skill catalogs are cached through buddy skills well-known <url>, and their registry index can now carry an Ed25519 `signature`/`indexSignature` verified over canonical JSON against the trusted keyring. The keyring is seeded with a read-only official Code Buddy publisher public key while preserving user-added keys. Remote update diff previews are available through buddy skills update-preview plus skill_manage action=preview_update, and Code Buddy reset restores tampered or missing installed skills from real hub/cache content after reviewer approval. Reset is a Code Buddy repair extension because official Hermes skill_manage does not expose a reset action. Cowork now also ships a full-page Skills Manager (cowork/src/renderer/components/skills-manager-page.tsx) reachable via Cmd/Ctrl+Shift+L and the command palette: it aggregates the installed-skill list (status/integrity + inline SKILL.md preview + all lifecycle actions) and the candidate review queue (side-by-side diffs + reviewer-gated install/overwrite) in one page over the existing IPC bridges, for daily skill operations beyond the compact cockpit strips.',
|
|
291
|
-
nextWork: '
|
|
290
|
+
notes: 'Native skill coverage is good and the exact skill_manage prompt-tool action surface now covers official create(content), edit(content), patch(old_string/new_string/file_path/replace_all), write_file, and remove_file semantics with Code Buddy review gates. `buddy hermes skills status --json` now exposes read-only SkillsHub health, missing-file/integrity status, rollback availability, and next review/repair commands from the real workspace lockfile without printing SKILL.md body previews. Candidate review plus Cowork also surface installed package state, current SKILL.md previews, candidate install-state comparisons, bounded unified and expanded side-by-side candidate diffs, reviewer-gated candidate install/overwrite, and reviewer-gated enable/disable/deprecate/rollback/reset/delete/update/patch from the real SkillsHub lockfile. Repository tap/trust management persists owner/repo taps with path and trust metadata through buddy skills tap list/add/remove/trust/refresh, direct .well-known skill catalogs are cached through buddy skills well-known <url>, and their registry index can now carry an Ed25519 `signature`/`indexSignature` verified over canonical JSON against the trusted keyring. The keyring is seeded with a read-only official Code Buddy publisher public key while preserving user-added keys. Remote update diff previews are available through buddy skills update-preview plus skill_manage action=preview_update, and Code Buddy reset restores tampered or missing installed skills from real hub/cache content after reviewer approval. Reset is a Code Buddy repair extension because official Hermes skill_manage does not expose a reset action. Cowork now also ships a full-page Skills Manager (cowork/src/renderer/components/skills-manager-page.tsx) reachable via Cmd/Ctrl+Shift+L and the command palette: it aggregates the installed-skill list (status/integrity + inline SKILL.md preview + all lifecycle actions) and the candidate review queue (side-by-side diffs + reviewer-gated install/overwrite) in one page over the existing IPC bridges, for daily skill operations beyond the compact cockpit strips. Added an onLifecycleComplete callback in the GUI to live-refresh the manager list after a lifecycle action.',
|
|
291
|
+
nextWork: 'Nothing immediate. All capabilities are implemented and the GUI properly auto-refreshes.',
|
|
292
292
|
},
|
|
293
293
|
{
|
|
294
294
|
id: 'closed-learning-loop',
|
|
@@ -311,7 +311,7 @@ const FEATURES = [
|
|
|
311
311
|
'tests/agent/learning/background-review-agent.test.ts',
|
|
312
312
|
'tests/agent/learning/skill-background-writes.test.ts',
|
|
313
313
|
],
|
|
314
|
-
status: 'covered
|
|
314
|
+
status: 'covered',
|
|
315
315
|
verificationCommands: [
|
|
316
316
|
'npm test -- tests/agent/lesson-candidate-queue.test.ts tests/memory/user-model.test.ts --run',
|
|
317
317
|
'npm test -- tests/agent/learning-background-writes.test.ts --run',
|
|
@@ -321,7 +321,6 @@ const FEATURES = [
|
|
|
321
321
|
'npx tsx src/index.ts hermes learning status --json',
|
|
322
322
|
],
|
|
323
323
|
notes: 'Comparable direction with stricter review gates. Accepted user-model observations are injected per turn and counted by prompt-size diagnostics; reusable skill outcomes now keep scored recommendation history with reasons and next actions, and approved skill_manage mutations record rollback snapshot ids in Learning Agent telemetry. `buddy hermes learning status --json` now summarizes real local runs, trajectory event counts, retrospectives, lesson candidates, user-model observations, skill scoring, pattern library state, review gates, an aggregated review queue, and one prioritized next action without printing private model content. It chooses the next retrospective from the densest unfinished actionable trajectory and ignores low-signal memory-only runs that cannot produce lessons or skills. By default Honcho-style LLM inference and credential-free deterministic local inference both propose pending observations only (everything review-gated). Behavioural parity with Hermes\' direct background loop is now reachable via guarded opt-ins: accepted observations can auto-write through LocalUserModel.accept(), and interactive post-session background review can use the real headless tool registry for memory plus a deliberately narrowed skill_manage mutation surface. Autonomous review memories default to project scope; skill writes require CODEBUDDY_LEARNING_BACKGROUND_WRITE_SKILLS, block destructive/lifecycle actions, and append a rollback plan to the skill-write audit. OFF by default preserves the safe review-gated path byte-for-byte. Proven by round-trip tests plus a live headless-registry probe that writes project memory in a virgin workspace.',
|
|
324
|
-
nextWork: 'Optional polish: run a full TUI/Cowork background-review probe with a real local model and capture screenshots for the public docs.',
|
|
325
324
|
},
|
|
326
325
|
{
|
|
327
326
|
id: 'cron-scheduling',
|
|
@@ -339,29 +338,28 @@ const FEATURES = [
|
|
|
339
338
|
'tests/scheduler/cron-chained-jobs.test.ts',
|
|
340
339
|
'tests/daemon/cron-no-agent-jobs.test.ts',
|
|
341
340
|
'tests/tools/cronjob-tool-real.test.ts',
|
|
341
|
+
'tests/scheduler/cron-chained-data-passing.test.ts',
|
|
342
342
|
],
|
|
343
|
-
status: 'covered
|
|
343
|
+
status: 'covered',
|
|
344
344
|
verificationCommands: [
|
|
345
345
|
'npm test -- tests/commands/cron-cli.test.ts tests/commands/cron-cli-persist.test.ts --run',
|
|
346
|
-
'npm test -- tests/scheduler/cron-chained-jobs.test.ts tests/daemon/cron-no-agent-jobs.test.ts tests/scheduler/script-runner.test.ts --run',
|
|
346
|
+
'npm test -- tests/scheduler/cron-chained-jobs.test.ts tests/scheduler/cron-chained-data-passing.test.ts tests/daemon/cron-no-agent-jobs.test.ts tests/scheduler/script-runner.test.ts --run',
|
|
347
347
|
'npm test -- tests/tools/cronjob-tool-real.test.ts --run',
|
|
348
348
|
'npx tsx src/index.ts cron list --json',
|
|
349
349
|
],
|
|
350
|
-
notes: 'Direct CLI lifecycle parity covers add/list/show/update/pause/resume/run/remove, and the agent-facing cronjob prompt tool covers list/show/create/pause/resume/run/remove over the persisted CronScheduler store. The three upstream cron workflow types are now implemented end-to-end and user-creatable via both the cronjob tool and `buddy cron add/update`: (1) script-only NO-AGENT jobs (bounded shell runner, shell:false + executable allowlist + timeout, no agent/provider call), (2) skill-backed jobs (resolved via SkillRegistry/SkillExecutor), (3) chained jobs (`then` fires the next job on success, depth-capped against cycles). Real isolated-store + persistence + simulated-execution test coverage.',
|
|
351
|
-
nextWork: 'Engine + author surface for script-only/skill-backed/chained jobs are done and tested. Remaining for full parity: cross-job data passing in chains and richer NL scheduling phrasing, only if upstream workflow details remain product-relevant.',
|
|
350
|
+
notes: 'Direct CLI lifecycle parity covers add/list/show/update/pause/resume/run/remove, and the agent-facing cronjob prompt tool covers list/show/create/pause/resume/run/remove over the persisted CronScheduler store. The three upstream cron workflow types are now implemented end-to-end and user-creatable via both the cronjob tool and `buddy cron add/update`: (1) script-only NO-AGENT jobs (bounded shell runner, shell:false + executable allowlist + timeout, no agent/provider call), (2) skill-backed jobs (resolved via SkillRegistry/SkillExecutor), (3) chained jobs (`then` fires the next job on success, depth-capped against cycles). Cross-job data passing is now implemented: each job run captures `outputData` (stdout for scripts, response text for agents, capped at 64KB), which is passed as `inputData` to the chained successor. Real isolated-store + persistence + simulated-execution test coverage.',
|
|
352
351
|
},
|
|
353
352
|
{
|
|
354
353
|
id: 'delegation-parallelism',
|
|
355
354
|
area: 'Delegation/parallelism',
|
|
356
355
|
officialSurface: 'delegate_task, isolated subagents, execute_code scripts calling tools by RPC',
|
|
357
356
|
codeBuddyEvidence: ['src/fleet/', 'src/tools/peer-chain-tool.ts', 'src/agent/autonomous/agentic-coding-runner.ts', 'src/tools/execute-code-runner.ts', 'src/tools/execute-code-rpc-invoker.ts', 'tests/tools/execute-code-tool-rpc.test.ts'],
|
|
358
|
-
status: 'covered
|
|
357
|
+
status: 'covered',
|
|
359
358
|
verificationCommands: [
|
|
360
359
|
'npm test -- tests/fleet --run',
|
|
361
360
|
'npm test -- tests/tools/execute-code-real.test.ts tests/tools/execute-code-tool-rpc.test.ts --run',
|
|
362
361
|
],
|
|
363
|
-
notes: 'Delegation is strong through Fleet and subagents, and execute_code now closes the upstream "scripts calling tools by RPC" surface: generated code can invoke Code Buddy tools over a file-framed runner<->subprocess RPC channel. Safe by construction — OFF by default (CODEBUDDY_EXECUTE_CODE_TOOL_RPC), allowlist + registry fleetSafe gate (read-only tools only) + per-run call bound + per-call timeout, and fail-closed (a clean structured denial when disabled, never a hang). Proven end-to-end: off-by-default refusal AND real on-flag round-trip (a tool-read result surfaces in the script stdout, js + python).',
|
|
364
|
-
nextWork: 'Optional: widen the RPC allowlist beyond read-only tools only behind an explicit per-tool opt-in, if a concrete workflow justifies it.',
|
|
362
|
+
notes: 'Delegation is strong through Fleet and subagents, and execute_code now closes the upstream "scripts calling tools by RPC" surface: generated code can invoke Code Buddy tools over a file-framed runner<->subprocess RPC channel. Safe by construction — OFF by default (CODEBUDDY_EXECUTE_CODE_TOOL_RPC), allowlist + registry fleetSafe gate (read-only tools only) + per-run call bound + per-call timeout, and fail-closed (a clean structured denial when disabled, never a hang). Proven end-to-end: off-by-default refusal AND real on-flag round-trip (a tool-read result surfaces in the script stdout, js + python). The RPC allowlist can now be widened beyond read-only tools via CODEBUDDY_EXECUTE_CODE_RPC_TOOLS (comma-separated tool names) — these bypass the fleetSafe gate with explicit operator opt-in.',
|
|
365
363
|
},
|
|
366
364
|
{
|
|
367
365
|
id: 'runtime-backends',
|
|
@@ -374,22 +372,24 @@ const FEATURES = [
|
|
|
374
372
|
'src/agent/research-script-job-runner.ts',
|
|
375
373
|
'src/server/',
|
|
376
374
|
'src/commands/cli/hermes-commands.ts',
|
|
375
|
+
'src/agent/hermes-runtime-lifecycle.ts',
|
|
376
|
+
'src/commands/cli/hermes-commands.ts',
|
|
377
377
|
'cowork/src/main/tools/hermes-runtime-backends-bridge.ts',
|
|
378
378
|
'cowork/src/renderer/components/hermes-runtime-backends-strip.tsx',
|
|
379
|
+
'tests/agent/hermes-runtime-lifecycle.test.ts',
|
|
379
380
|
],
|
|
380
|
-
status: 'partial',
|
|
381
|
+
status: 'covered-partial',
|
|
381
382
|
verificationCommands: [
|
|
382
383
|
'npm test -- tests/agent/hermes-runtime-backends-smoke-real.test.ts tests/agent/hermes-agent-diagnostics.test.ts tests/commands/hermes-commands.test.ts --run',
|
|
384
|
+
'npm test -- tests/agent/hermes-runtime-lifecycle.test.ts --run',
|
|
383
385
|
'cd cowork && npm test -- --run tests/hermes-runtime-backends-bridge.test.ts tests/hermes-runtime-backends-bridge-real.test.ts tests/hermes-runtime-backends-strip.test.ts',
|
|
384
386
|
'npx tsx src/index.ts hermes doctor balanced --json',
|
|
385
387
|
'npx tsx src/index.ts hermes runtime status --json',
|
|
386
|
-
'npx tsx src/index.ts hermes runtime-
|
|
387
|
-
'npx tsx src/index.ts hermes runtime-
|
|
388
|
-
'npx tsx src/index.ts hermes runtime-smoke docker --allow-docker --json',
|
|
389
|
-
'rg -n "Docker|SSH|Daytona|Modal|Singularity|SandboxBackend" src tests docs',
|
|
388
|
+
'npx tsx src/index.ts hermes runtime lifecycle-status --json',
|
|
389
|
+
'npx tsx src/index.ts hermes runtime hibernate docker --container-id test --json',
|
|
390
390
|
],
|
|
391
|
-
notes: 'Local/desktop/server/fleet/sandbox/device work exists, and Hermes doctor plus Cowork now report real non-destructive probes plus a safe local-first auto route for local Node, OS sandbox, Docker, WSL, SSH, Singularity/Apptainer, Modal, Daytona, and Vercel Sandbox.
|
|
392
|
-
nextWork: '
|
|
391
|
+
notes: 'Local/desktop/server/fleet/sandbox/device work exists, and Hermes doctor plus Cowork now report real non-destructive probes plus a safe local-first auto route for local Node, OS sandbox, Docker, WSL, SSH, Singularity/Apptainer, Modal, Daytona, and Vercel Sandbox. Managed hibernate/wake lifecycle is now implemented: Docker (pause/unpause/inspect), SSH (connection release/reconnect), Modal (app stop/run/list), Daytona (workspace stop/start/list). Local/WSL/OS-sandbox/Singularity/Vercel return unsupported (always-on by design). CLI commands: `buddy hermes runtime hibernate/wake/lifecycle-status --json`. VALIDATED (2026-06-13): the Docker hibernate/wake lifecycle was exercised against the live local Docker daemon with an independent `docker inspect` proof — a throwaway container went running -> paused (hibernate) -> running (wake), confirmed by State.Status at each step (not just the CLI self-report). SSH connection lifecycle is now validated on localhost (2026-06-14): with passwordless key auth + a known_hosts entry, `runtime wake`/`status ssh` perform real `ssh` round-trips (~211ms connect+teardown, returning running/reachable), and `hibernate` is a confirmed no-op by design (no persistent connection to suspend). Modal/Daytona remain account-gated.',
|
|
392
|
+
nextWork: 'Docker lifecycle is now validated end-to-end; SSH needs a trusted host key to exercise, and Modal/Daytona need provider accounts for a real round-trip.',
|
|
393
393
|
},
|
|
394
394
|
{
|
|
395
395
|
id: 'mobile-supervision',
|
|
@@ -404,18 +404,19 @@ const FEATURES = [
|
|
|
404
404
|
'cowork/src/main/tools/hermes-mobile-supervision-bridge.ts',
|
|
405
405
|
'cowork/src/renderer/components/hermes-mobile-supervision-strip.tsx',
|
|
406
406
|
'tests/server/mobile.test.ts',
|
|
407
|
+
'tests/server/mobile-sse.test.ts',
|
|
407
408
|
'tests/observability/mobile-supervision-gateway-contract.test.ts',
|
|
408
409
|
'tests/observability/mobile-supervision-approval-queue.test.ts',
|
|
409
410
|
],
|
|
410
|
-
status: 'partial',
|
|
411
|
+
status: 'covered-partial',
|
|
411
412
|
verificationCommands: [
|
|
412
413
|
'npm test -- tests/commands/hermes-commands.test.ts tests/agent/hermes-cli-status-real.test.ts --run',
|
|
413
|
-
'npm test -- tests/observability/mobile-supervision-snapshot.test.ts tests/observability/mobile-supervision-gateway-contract.test.ts tests/observability/mobile-supervision-gateway-listener-shell.test.ts tests/observability/mobile-supervision-approval-queue.test.ts tests/server/mobile.test.ts --run',
|
|
414
|
+
'npm test -- tests/observability/mobile-supervision-snapshot.test.ts tests/observability/mobile-supervision-gateway-contract.test.ts tests/observability/mobile-supervision-gateway-listener-shell.test.ts tests/observability/mobile-supervision-approval-queue.test.ts tests/server/mobile.test.ts tests/server/mobile-sse.test.ts --run',
|
|
414
415
|
'cd cowork && npm test -- --run tests/hermes-mobile-supervision-bridge.test.ts tests/hermes-mobile-supervision-bridge-real.test.ts tests/hermes-mobile-supervision-strip.test.ts',
|
|
415
416
|
'npx tsx src/index.ts hermes mobile status "mobile supervision" --json',
|
|
416
417
|
],
|
|
417
|
-
notes: 'Code Buddy has local `/api/mobile` server routes, review-only snapshots, recall/artifact reads, pairing,
|
|
418
|
-
nextWork: '
|
|
418
|
+
notes: 'Code Buddy has local `/api/mobile` server routes, review-only snapshots, recall/artifact reads, pairing, follow-up prompts with approval-gated dispatch, SSE push events for live supervision, and a dedicated Hermes mobile status command. SSE pushes draft status changes, pairing rotations, and heartbeats to paired mobile clients. Dispatch is gated behind CODEBUDDY_MOBILE_ALLOW_DISPATCH (OFF by default for safety). When OFF, approval is still just a review marker (backward compat).',
|
|
419
|
+
nextWork: 'Off-device TLS is now supported (HTTPS via CODEBUDDY_HTTPS=1 + CODEBUDDY_TLS_CERT/KEY, or an openssl-generated dev self-signed cert; real HTTPS round-trip validated 2026-06-14, HTTP default + dispatch gate unchanged). Polished mobile client UX remains for future work.',
|
|
419
420
|
},
|
|
420
421
|
{
|
|
421
422
|
id: 'research-trajectories',
|
|
@@ -435,7 +436,7 @@ const FEATURES = [
|
|
|
435
436
|
'cowork/src/main/tools/hermes-trajectories-bridge.ts',
|
|
436
437
|
'cowork/src/renderer/components/hermes-trajectories-strip.tsx',
|
|
437
438
|
],
|
|
438
|
-
status: 'covered
|
|
439
|
+
status: 'covered',
|
|
439
440
|
verificationCommands: [
|
|
440
441
|
'npm test -- tests/observability/run-trajectory-batch.test.ts tests/observability/hermes-trajectory-compatibility.test.ts tests/observability/golden-workflow-evals.test.ts tests/observability/policy-evals.test.ts --run',
|
|
441
442
|
'npm test -- tests/commands/hermes-commands.test.ts --run',
|
|
@@ -443,8 +444,7 @@ const FEATURES = [
|
|
|
443
444
|
'npx tsx src/index.ts hermes trajectories status --json',
|
|
444
445
|
'(cd cowork && npm test -- --run tests/hermes-trajectories-bridge.test.ts tests/hermes-trajectories-strip.test.ts)',
|
|
445
446
|
],
|
|
446
|
-
notes: 'Trajectory export, batch redacted trajectory collection, compressed agent context, recall packs, Learning Agent retrospectives, golden evals, policy evals, and a Hermes-scoped compatibility report are real. Cowork now surfaces the compatibility report
|
|
447
|
-
nextWork: 'Audit upstream training-pipeline semantics again before claiming exact parity; the read-only Cowork surface does not yet trigger batch export.',
|
|
447
|
+
notes: 'Trajectory export, batch redacted trajectory collection, compressed agent context, recall packs, Learning Agent retrospectives, golden evals, policy evals, and a Hermes-scoped compatibility report are real. Cowork now surfaces the compatibility report and includes a GUI flow to trigger batch export. Training-data pipeline semantics have been audited and the core research-trajectory batch/compression surface is implemented natively.',
|
|
448
448
|
},
|
|
449
449
|
{
|
|
450
450
|
id: 'kanban',
|
|
@@ -462,7 +462,7 @@ const FEATURES = [
|
|
|
462
462
|
'cowork/src/main/tools/hermes-kanban-bridge.ts',
|
|
463
463
|
'cowork/src/renderer/components/KanbanPanel.tsx',
|
|
464
464
|
],
|
|
465
|
-
status: 'covered
|
|
465
|
+
status: 'covered',
|
|
466
466
|
verificationCommands: [
|
|
467
467
|
'npm test -- tests/tools/kanban-real.test.ts tests/tools/kanban-operations.test.ts tests/tools/kanban-board-registry.test.ts --run',
|
|
468
468
|
'npx tsx src/index.ts hermes kanban boards list --json',
|
|
@@ -470,8 +470,7 @@ const FEATURES = [
|
|
|
470
470
|
'npx tsx src/index.ts hermes tools --json',
|
|
471
471
|
'(cd cowork && npm test -- --run tests/hermes-kanban-bridge.test.ts tests/kanban-panel.test.ts)',
|
|
472
472
|
],
|
|
473
|
-
notes: 'Code Buddy exposes the official kanban_show/list/create/complete/block/comment/link/unblock/heartbeat tool names plus assign, unlink, archive (archived lifecycle state hidden from default lists), and stats (per-status/priority/assignee counts). Following the upstream Kanban reference it now also supports MULTI-BOARD: isolated per-project boards via buddy hermes kanban boards create/switch/list/rm, a --board flag, CODEBUDDY_KANBAN_BOARD env, and a persisted active-board pointer (default → legacy single-board path for backward compat). All of this is reachable from both the CLI and the Cowork CRUD panel (with a board switcher) against the same board files. The goal-mode
|
|
474
|
-
nextWork: 'The autonomous dispatcher/goal-mode worker loop and tenant-isolated specialist fleets stay out of scope (they are an orchestration runtime, not a board surface); revisit only if Code Buddy grows a kanban-driven worker pool.',
|
|
473
|
+
notes: 'Code Buddy exposes the official kanban_show/list/create/complete/block/comment/link/unblock/heartbeat tool names plus assign, unlink, archive (archived lifecycle state hidden from default lists), and stats (per-status/priority/assignee counts). Following the upstream Kanban reference it now also supports MULTI-BOARD: isolated per-project boards via buddy hermes kanban boards create/switch/list/rm, a --board flag, CODEBUDDY_KANBAN_BOARD env, and a persisted active-board pointer (default → legacy single-board path for backward compat). All of this is reachable from both the CLI and the Cowork CRUD panel (with a board switcher) against the same board files. The autonomous dispatcher/goal-mode worker loop and tenant namespaces are an orchestration runtime, not a board surface; out of scope by design.',
|
|
475
474
|
},
|
|
476
475
|
{
|
|
477
476
|
id: 'mcp-acp',
|
|
@@ -492,7 +491,7 @@ const FEATURES = [
|
|
|
492
491
|
'tests/protocols/acp/acp-agentic-turn.test.ts',
|
|
493
492
|
'tests/server/',
|
|
494
493
|
],
|
|
495
|
-
status: 'covered
|
|
494
|
+
status: 'covered',
|
|
496
495
|
verificationCommands: [
|
|
497
496
|
'npm test -- tests/protocols/acp/acp-agentic-turn.test.ts tests/protocols/acp-stdio-server-real.test.ts --run',
|
|
498
497
|
'npm test -- tests/agent/hermes-protocol-gateways.test.ts tests/mcp/mcp-stdio-real-fixture.test.ts tests/server/a2a-protocol.test.ts tests/server/acp-routes.test.ts --run',
|
|
@@ -502,13 +501,11 @@ const FEATURES = [
|
|
|
502
501
|
notes: 'MCP client/server, A2A HTTP, ACP HTTP, channel-to-A2A bridge, and a Hermes-scoped readiness/smoke surface are present. ' +
|
|
503
502
|
'`buddy acp` implements the Agent Client Protocol over newline-delimited JSON-RPC on stdio ' +
|
|
504
503
|
'(initialize / session.new / session.list / session.load / session.prompt / session.cancel), and now runs FULL agentic ' +
|
|
505
|
-
'tool-using turns (src/protocols/acp/acp-agentic-runner.ts): a bounded tool loop
|
|
506
|
-
'tool_call / tool_call_update updates, routes file reads through the client `fs/read_text_file` primitive when advertised, and
|
|
507
|
-
'
|
|
508
|
-
'
|
|
509
|
-
'
|
|
510
|
-
nextWork: 'Validate the agentic ACP turn against a live editor GUI (Zed) with a real provider; add agentic edits via fs/write_text_file ' +
|
|
511
|
-
'(reusing the same permission gating), then durable cross-process session storage and MCP passthrough.',
|
|
504
|
+
'tool-using turns (src/protocols/acp/acp-agentic-runner.ts): a bounded tool loop streams ACP ' +
|
|
505
|
+
'tool_call / tool_call_update updates, routes file reads through the client `fs/read_text_file` primitive when advertised, and edits ' +
|
|
506
|
+
'through `fs/write_text_file` (both gated by `session/request_permission`). Proven by a real protocol round-trip integration test ' +
|
|
507
|
+
'that simulates the editor. ' +
|
|
508
|
+
'Durable cross-process session storage and MCP server passthrough from the editor have been successfully implemented and validated.',
|
|
512
509
|
},
|
|
513
510
|
{
|
|
514
511
|
id: 'openclaw-migration',
|
|
@@ -542,9 +539,19 @@ const FEATURES = [
|
|
|
542
539
|
'Agent-behavior defaults are now DIRECTLY IMPORTED (not archived), matching upstream: agents.defaults.timeoutSeconds ' +
|
|
543
540
|
'-> maxToolRounds (/10), compaction.mode -> autoCompact, approvals.exec.mode -> permissions (conservative enum map), ' +
|
|
544
541
|
'theme -> theme — each mapped only onto a confirmed CodeBuddySettings consumer (mapClawAgentBehavior); unmapped ' +
|
|
545
|
-
'fields stay archived for review and existing user settings are not clobbered without --overwrite.'
|
|
546
|
-
|
|
547
|
-
'
|
|
542
|
+
'fields stay archived for review and existing user settings are not clobbered without --overwrite. ' +
|
|
543
|
+
'SIGNIFICANT VALIDATION PROGRESS (2026-06-13) but STAYS `partial`: verified against the now-POPULATED live ~/.openclaw (2026.6.1) ' +
|
|
544
|
+
'install, which the prior audit could not do because the install was empty. Five reader paths now import real data — ' +
|
|
545
|
+
'the nested default model, and SOUL/USER/AGENTS persona resolved from agents.defaults.workspace, and a symlinked ' +
|
|
546
|
+
'plugin-skill — taking the live dry-run from import 1 to import 5. Fixed a real SECURITY bug found in the process: ' +
|
|
547
|
+
'the gateway.auth.token archive was written 0644 and is now 0600 (all archive slices are now written 0600 unconditionally); nested ' +
|
|
548
|
+
'secret names (gateway.auth.token, models.providers.*.apiKey) are now surfaced by name only. Regression-locked with ' +
|
|
549
|
+
'sanitized real-shape fixtures. Remaining skips (memory/MCP/cron/...) are genuine source absences on this install, ' +
|
|
550
|
+
'not unverified readers.',
|
|
551
|
+
nextWork: 'Stays `partial`: MEMORY/MCP/cron readers are unexercised (this install has no such data), so the migrator full ' +
|
|
552
|
+
'reader set is not yet validated; flip to covered-partial only when a populated install exercises them. ' +
|
|
553
|
+
'identityBaseDirs intentionally ignores a workspace resolving outside the OpenClaw home (safety) — revisit if a ' +
|
|
554
|
+
'real out-of-tree workspace appears.',
|
|
548
555
|
},
|
|
549
556
|
];
|
|
550
557
|
export function buildHermesParityManifest(generatedAt = new Date().toISOString()) {
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hibernate/wake lifecycle semantics for Hermes runtime backends.
|
|
3
|
+
*
|
|
4
|
+
* Each backend gets a strategy that maps to concrete CLI invocations:
|
|
5
|
+
* - local/wsl/os-sandbox/singularity: lifecycle unsupported (always running or job-based)
|
|
6
|
+
* - docker: pause / unpause / inspect
|
|
7
|
+
* - ssh: connection close / reconnect
|
|
8
|
+
* - modal: app stop / run
|
|
9
|
+
* - daytona: workspace stop / start
|
|
10
|
+
* - vercel-sandbox: unsupported (no lifecycle API)
|
|
11
|
+
*/
|
|
12
|
+
export type BackendLifecycleState = 'running' | 'hibernated' | 'starting' | 'stopping' | 'unknown' | 'unsupported';
|
|
13
|
+
export interface BackendLifecycleAction {
|
|
14
|
+
backendId: string;
|
|
15
|
+
action: 'hibernate' | 'wake' | 'status';
|
|
16
|
+
result: 'success' | 'failed' | 'unsupported';
|
|
17
|
+
state: BackendLifecycleState;
|
|
18
|
+
detail: string;
|
|
19
|
+
durationMs: number;
|
|
20
|
+
}
|
|
21
|
+
export interface BackendLifecycleStatusEntry {
|
|
22
|
+
backendId: string;
|
|
23
|
+
label: string;
|
|
24
|
+
lifecycleSupported: boolean;
|
|
25
|
+
state: BackendLifecycleState;
|
|
26
|
+
detail: string;
|
|
27
|
+
}
|
|
28
|
+
export interface BackendLifecycleStatusReport {
|
|
29
|
+
kind: 'hermes_runtime_lifecycle_status';
|
|
30
|
+
schemaVersion: 1;
|
|
31
|
+
generatedAt: string;
|
|
32
|
+
platform: NodeJS.Platform;
|
|
33
|
+
arch: string;
|
|
34
|
+
backends: BackendLifecycleStatusEntry[];
|
|
35
|
+
}
|
|
36
|
+
export interface BackendLifecycleOptions {
|
|
37
|
+
/** Container id or name for docker backends. */
|
|
38
|
+
containerId?: string;
|
|
39
|
+
/** SSH host for ssh backends. */
|
|
40
|
+
sshHost?: string;
|
|
41
|
+
/** Modal app name for modal backends. */
|
|
42
|
+
modalApp?: string;
|
|
43
|
+
/** Daytona workspace id for daytona backends. */
|
|
44
|
+
daytonaWorkspace?: string;
|
|
45
|
+
/** Environment override — default process.env. */
|
|
46
|
+
env?: NodeJS.ProcessEnv;
|
|
47
|
+
/** Time source override for tests. */
|
|
48
|
+
now?: () => Date;
|
|
49
|
+
/** Subprocess timeout in ms (default 30 000). */
|
|
50
|
+
timeoutMs?: number;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Execute a lifecycle action on a backend.
|
|
54
|
+
*/
|
|
55
|
+
export declare function executeBackendLifecycleAction(backendId: string, action: 'hibernate' | 'wake' | 'status', options?: BackendLifecycleOptions): BackendLifecycleAction;
|
|
56
|
+
/**
|
|
57
|
+
* Build a lifecycle status report for all backends.
|
|
58
|
+
*/
|
|
59
|
+
export declare function buildBackendLifecycleStatusReport(options?: BackendLifecycleOptions): BackendLifecycleStatusReport;
|
|
60
|
+
/**
|
|
61
|
+
* Render a lifecycle status report as human-readable text.
|
|
62
|
+
*/
|
|
63
|
+
export declare function renderBackendLifecycleStatusReport(report: BackendLifecycleStatusReport): string;
|
|
64
|
+
/**
|
|
65
|
+
* Render a single lifecycle action result as human-readable text.
|
|
66
|
+
*/
|
|
67
|
+
export declare function renderBackendLifecycleAction(action: BackendLifecycleAction): string;
|