gobby 0.2.5__tar.gz → 0.2.6__tar.gz
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.
- {gobby-0.2.5 → gobby-0.2.6}/PKG-INFO +82 -21
- {gobby-0.2.5 → gobby-0.2.6}/README.md +79 -19
- {gobby-0.2.5 → gobby-0.2.6}/pyproject.toml +9 -2
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/adapters/claude_code.py +13 -4
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/adapters/codex.py +43 -3
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/agents/runner.py +8 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/cli/__init__.py +6 -0
- gobby-0.2.6/src/gobby/cli/clones.py +419 -0
- gobby-0.2.6/src/gobby/cli/conductor.py +266 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/cli/installers/antigravity.py +3 -9
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/cli/installers/claude.py +9 -9
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/cli/installers/codex.py +2 -8
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/cli/installers/gemini.py +2 -8
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/cli/installers/shared.py +71 -8
- gobby-0.2.6/src/gobby/cli/skills.py +858 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/cli/tasks/ai.py +0 -440
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/cli/tasks/crud.py +44 -6
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/cli/tasks/main.py +0 -4
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/cli/tui.py +2 -2
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/cli/utils.py +3 -3
- gobby-0.2.6/src/gobby/clones/__init__.py +13 -0
- gobby-0.2.6/src/gobby/clones/git.py +547 -0
- gobby-0.2.6/src/gobby/conductor/__init__.py +16 -0
- gobby-0.2.6/src/gobby/conductor/alerts.py +135 -0
- gobby-0.2.6/src/gobby/conductor/loop.py +164 -0
- gobby-0.2.6/src/gobby/conductor/monitors/__init__.py +11 -0
- gobby-0.2.6/src/gobby/conductor/monitors/agents.py +116 -0
- gobby-0.2.6/src/gobby/conductor/monitors/tasks.py +155 -0
- gobby-0.2.6/src/gobby/conductor/pricing.py +234 -0
- gobby-0.2.6/src/gobby/conductor/token_tracker.py +160 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/config/app.py +63 -1
- gobby-0.2.6/src/gobby/config/search.py +110 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/config/servers.py +1 -1
- gobby-0.2.6/src/gobby/config/skills.py +43 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/config/tasks.py +6 -14
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/hooks/event_handlers.py +145 -2
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/hooks/hook_manager.py +48 -2
- gobby-0.2.6/src/gobby/hooks/skill_manager.py +130 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/install/claude/hooks/hook_dispatcher.py +4 -4
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/install/codex/hooks/hook_dispatcher.py +1 -1
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/install/gemini/hooks/hook_dispatcher.py +87 -12
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/llm/claude.py +22 -34
- gobby-0.2.6/src/gobby/llm/claude_executor.py +293 -0
- gobby-0.2.6/src/gobby/llm/codex_executor.py +281 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/llm/executor.py +21 -0
- gobby-0.2.6/src/gobby/llm/gemini.py +282 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/llm/litellm_executor.py +143 -6
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/llm/resolver.py +95 -33
- gobby-0.2.6/src/gobby/mcp_proxy/instructions.py +54 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/mcp_proxy/models.py +15 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/mcp_proxy/registries.py +68 -5
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/mcp_proxy/server.py +33 -3
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/mcp_proxy/services/tool_proxy.py +81 -1
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/mcp_proxy/stdio.py +2 -1
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/mcp_proxy/tools/__init__.py +0 -2
- gobby-0.2.6/src/gobby/mcp_proxy/tools/agent_messaging.py +317 -0
- gobby-0.2.6/src/gobby/mcp_proxy/tools/clones.py +903 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/mcp_proxy/tools/memory.py +1 -24
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/mcp_proxy/tools/metrics.py +65 -1
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/mcp_proxy/tools/orchestration/__init__.py +3 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/mcp_proxy/tools/orchestration/cleanup.py +151 -0
- gobby-0.2.6/src/gobby/mcp_proxy/tools/orchestration/wait.py +467 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/mcp_proxy/tools/session_messages.py +1 -2
- gobby-0.2.6/src/gobby/mcp_proxy/tools/skills/__init__.py +631 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/mcp_proxy/tools/task_orchestration.py +7 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/mcp_proxy/tools/task_readiness.py +14 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/mcp_proxy/tools/task_sync.py +1 -1
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/mcp_proxy/tools/tasks/_context.py +0 -20
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/mcp_proxy/tools/tasks/_crud.py +91 -4
- gobby-0.2.6/src/gobby/mcp_proxy/tools/tasks/_expansion.py +348 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/mcp_proxy/tools/tasks/_factory.py +6 -16
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/mcp_proxy/tools/tasks/_lifecycle.py +60 -29
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/mcp_proxy/tools/tasks/_lifecycle_validation.py +18 -29
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/mcp_proxy/tools/workflows.py +1 -1
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/mcp_proxy/tools/worktrees.py +5 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/memory/backends/__init__.py +6 -1
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/memory/backends/mem0.py +6 -1
- gobby-0.2.6/src/gobby/memory/extractor.py +477 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/memory/manager.py +11 -2
- gobby-0.2.6/src/gobby/prompts/defaults/handoff/compact.md +63 -0
- gobby-0.2.6/src/gobby/prompts/defaults/handoff/session_end.md +57 -0
- gobby-0.2.6/src/gobby/prompts/defaults/memory/extract.md +61 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/runner.py +37 -16
- gobby-0.2.6/src/gobby/search/__init__.py +65 -0
- gobby-0.2.6/src/gobby/search/backends/__init__.py +159 -0
- gobby-0.2.6/src/gobby/search/backends/embedding.py +225 -0
- gobby-0.2.6/src/gobby/search/embeddings.py +238 -0
- gobby-0.2.6/src/gobby/search/models.py +148 -0
- gobby-0.2.6/src/gobby/search/unified.py +496 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/servers/http.py +23 -8
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/servers/routes/admin.py +280 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/servers/routes/mcp/tools.py +241 -52
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/servers/websocket.py +2 -2
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/sessions/analyzer.py +2 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/sessions/transcripts/base.py +1 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/sessions/transcripts/claude.py +64 -5
- gobby-0.2.6/src/gobby/skills/__init__.py +91 -0
- gobby-0.2.6/src/gobby/skills/loader.py +685 -0
- gobby-0.2.6/src/gobby/skills/manager.py +384 -0
- gobby-0.2.6/src/gobby/skills/parser.py +258 -0
- gobby-0.2.6/src/gobby/skills/search.py +463 -0
- gobby-0.2.6/src/gobby/skills/sync.py +119 -0
- gobby-0.2.6/src/gobby/skills/updater.py +385 -0
- gobby-0.2.6/src/gobby/skills/validator.py +368 -0
- gobby-0.2.6/src/gobby/storage/clones.py +378 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/storage/database.py +1 -1
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/storage/memories.py +43 -13
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/storage/migrations.py +180 -6
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/storage/sessions.py +73 -0
- gobby-0.2.6/src/gobby/storage/skills.py +749 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/storage/tasks/_crud.py +4 -4
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/storage/tasks/_lifecycle.py +41 -6
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/storage/tasks/_manager.py +14 -5
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/storage/tasks/_models.py +8 -3
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/sync/memories.py +39 -4
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/sync/tasks.py +83 -6
- gobby-0.2.6/src/gobby/tasks/__init__.py +7 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/tasks/validation.py +24 -15
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/tui/api_client.py +4 -7
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/tui/app.py +5 -3
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/tui/screens/orchestrator.py +1 -2
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/tui/screens/tasks.py +2 -4
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/tui/ws_client.py +1 -1
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/utils/daemon_client.py +2 -2
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/workflows/actions.py +84 -2
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/workflows/context_actions.py +43 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/workflows/detection_helpers.py +115 -31
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/workflows/engine.py +13 -2
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/workflows/lifecycle_evaluator.py +29 -1
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/workflows/loader.py +19 -6
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/workflows/memory_actions.py +74 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/workflows/summary_actions.py +17 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/workflows/task_enforcement_actions.py +448 -6
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby.egg-info/PKG-INFO +82 -21
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby.egg-info/SOURCES.txt +42 -12
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby.egg-info/requires.txt +3 -1
- gobby-0.2.6/tests/test_import_pathing_trap.py +42 -0
- {gobby-0.2.5 → gobby-0.2.6}/tests/test_runner.py +14 -77
- gobby-0.2.5/src/gobby/install/codex/prompts/forget.md +0 -7
- gobby-0.2.5/src/gobby/install/codex/prompts/memories.md +0 -7
- gobby-0.2.5/src/gobby/install/codex/prompts/recall.md +0 -7
- gobby-0.2.5/src/gobby/install/codex/prompts/remember.md +0 -13
- gobby-0.2.5/src/gobby/llm/claude_executor.py +0 -503
- gobby-0.2.5/src/gobby/llm/codex_executor.py +0 -513
- gobby-0.2.5/src/gobby/llm/gemini.py +0 -258
- gobby-0.2.5/src/gobby/llm/gemini_executor.py +0 -339
- gobby-0.2.5/src/gobby/mcp_proxy/tools/task_expansion.py +0 -591
- gobby-0.2.5/src/gobby/search/__init__.py +0 -23
- gobby-0.2.5/src/gobby/tasks/__init__.py +0 -8
- gobby-0.2.5/src/gobby/tasks/context.py +0 -747
- gobby-0.2.5/src/gobby/tasks/criteria.py +0 -342
- gobby-0.2.5/src/gobby/tasks/expansion.py +0 -626
- gobby-0.2.5/src/gobby/tasks/prompts/expand.py +0 -327
- gobby-0.2.5/src/gobby/tasks/research.py +0 -421
- gobby-0.2.5/src/gobby/tasks/tdd.py +0 -352
- {gobby-0.2.5 → gobby-0.2.6}/LICENSE.md +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/setup.cfg +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/__init__.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/adapters/__init__.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/adapters/base.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/adapters/gemini.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/agents/__init__.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/agents/codex_session.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/agents/constants.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/agents/context.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/agents/definitions.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/agents/gemini_session.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/agents/registry.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/agents/session.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/agents/spawn.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/agents/spawners/__init__.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/agents/spawners/base.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/agents/spawners/cross_platform.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/agents/spawners/embedded.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/agents/spawners/headless.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/agents/spawners/linux.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/agents/spawners/macos.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/agents/spawners/windows.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/agents/tty_config.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/autonomous/__init__.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/autonomous/progress_tracker.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/autonomous/stop_registry.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/autonomous/stuck_detector.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/cli/__main__.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/cli/agents.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/cli/artifacts.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/cli/daemon.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/cli/extensions.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/cli/github.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/cli/init.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/cli/install.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/cli/installers/__init__.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/cli/installers/git_hooks.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/cli/linear.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/cli/mcp.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/cli/mcp_proxy.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/cli/memory.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/cli/merge.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/cli/projects.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/cli/sessions.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/cli/tasks/__init__.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/cli/tasks/_utils.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/cli/tasks/commits.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/cli/tasks/deps.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/cli/tasks/labels.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/cli/tasks/search.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/cli/workflows.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/cli/worktrees.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/config/__init__.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/config/extensions.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/config/features.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/config/llm_providers.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/config/logging.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/config/mcp.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/config/persistence.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/config/sessions.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/hooks/__init__.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/hooks/artifact_capture.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/hooks/broadcaster.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/hooks/events.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/hooks/git.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/hooks/health_monitor.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/hooks/hook_types.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/hooks/plugins.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/hooks/session_coordinator.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/hooks/verification_runner.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/hooks/webhooks.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/install/claude/commands/gobby/bug.md +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/install/claude/commands/gobby/chore.md +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/install/claude/commands/gobby/epic.md +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/install/claude/commands/gobby/eval.md +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/install/claude/commands/gobby/feat.md +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/install/claude/commands/gobby/nit.md +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/install/claude/commands/gobby/ref.md +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/install/claude/hooks/HOOK_SCHEMAS.md +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/install/claude/hooks/validate_settings.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/install/claude/hooks-template.json +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/install/gemini/hooks-template.json +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/install/shared/plugins/code_guardian.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/install/shared/plugins/example_notify.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/integrations/__init__.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/integrations/github.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/integrations/linear.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/llm/__init__.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/llm/base.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/llm/codex.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/llm/factory.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/llm/litellm.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/llm/service.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/mcp_proxy/__init__.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/mcp_proxy/actions.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/mcp_proxy/daemon_control.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/mcp_proxy/importer.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/mcp_proxy/lazy.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/mcp_proxy/manager.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/mcp_proxy/metrics.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/mcp_proxy/schema_hash.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/mcp_proxy/semantic_search.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/mcp_proxy/services/__init__.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/mcp_proxy/services/fallback.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/mcp_proxy/services/recommendation.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/mcp_proxy/services/server_mgmt.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/mcp_proxy/services/system.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/mcp_proxy/services/tool_filter.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/mcp_proxy/tools/agents.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/mcp_proxy/tools/artifacts.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/mcp_proxy/tools/hub.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/mcp_proxy/tools/internal.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/mcp_proxy/tools/merge.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/mcp_proxy/tools/orchestration/monitor.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/mcp_proxy/tools/orchestration/orchestrate.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/mcp_proxy/tools/orchestration/review.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/mcp_proxy/tools/orchestration/utils.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/mcp_proxy/tools/task_dependencies.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/mcp_proxy/tools/task_github.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/mcp_proxy/tools/task_linear.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/mcp_proxy/tools/task_validation.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/mcp_proxy/tools/tasks/__init__.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/mcp_proxy/tools/tasks/_helpers.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/mcp_proxy/tools/tasks/_resolution.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/mcp_proxy/tools/tasks/_search.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/mcp_proxy/tools/tasks/_session.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/mcp_proxy/transports/__init__.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/mcp_proxy/transports/base.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/mcp_proxy/transports/factory.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/mcp_proxy/transports/http.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/mcp_proxy/transports/stdio.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/mcp_proxy/transports/websocket.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/memory/backends/memu.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/memory/backends/null.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/memory/backends/openmemory.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/memory/backends/sqlite.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/memory/context.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/memory/protocol.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/memory/search/__init__.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/memory/search/text.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/memory/viz.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/prompts/__init__.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/prompts/defaults/expansion/system.md +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/prompts/defaults/expansion/user.md +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/prompts/defaults/external_validation/agent.md +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/prompts/defaults/external_validation/external.md +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/prompts/defaults/external_validation/spawn.md +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/prompts/defaults/external_validation/system.md +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/prompts/defaults/features/import_mcp.md +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/prompts/defaults/features/import_mcp_github.md +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/prompts/defaults/features/import_mcp_search.md +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/prompts/defaults/features/recommend_tools.md +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/prompts/defaults/features/recommend_tools_hybrid.md +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/prompts/defaults/features/recommend_tools_llm.md +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/prompts/defaults/features/server_description.md +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/prompts/defaults/features/server_description_system.md +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/prompts/defaults/features/task_description.md +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/prompts/defaults/features/task_description_system.md +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/prompts/defaults/features/tool_summary.md +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/prompts/defaults/features/tool_summary_system.md +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/prompts/defaults/research/step.md +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/prompts/defaults/validation/criteria.md +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/prompts/defaults/validation/validate.md +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/prompts/loader.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/prompts/models.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/py.typed +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/search/protocol.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/search/tfidf.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/servers/__init__.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/servers/models.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/servers/routes/__init__.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/servers/routes/dependencies.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/servers/routes/mcp/__init__.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/servers/routes/mcp/hooks.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/servers/routes/mcp/plugins.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/servers/routes/mcp/webhooks.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/servers/routes/sessions.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/sessions/__init__.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/sessions/lifecycle.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/sessions/manager.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/sessions/processor.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/sessions/summary.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/sessions/transcripts/__init__.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/sessions/transcripts/codex.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/sessions/transcripts/gemini.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/storage/__init__.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/storage/agents.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/storage/artifact_classifier.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/storage/artifacts.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/storage/compaction.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/storage/inter_session_messages.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/storage/mcp.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/storage/merge_resolutions.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/storage/migrations_legacy.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/storage/projects.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/storage/session_messages.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/storage/session_tasks.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/storage/task_dependencies.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/storage/tasks/__init__.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/storage/tasks/_aggregates.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/storage/tasks/_id.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/storage/tasks/_ordering.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/storage/tasks/_path_cache.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/storage/tasks/_queries.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/storage/tasks/_search.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/storage/workflow_audit.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/storage/worktrees.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/sync/__init__.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/sync/github.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/sync/linear.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/tasks/build_verification.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/tasks/commits.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/tasks/enhanced_validator.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/tasks/escalation.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/tasks/external_validator.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/tasks/issue_extraction.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/tasks/tree_builder.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/tasks/validation_history.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/tasks/validation_models.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/tools/__init__.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/tools/summarizer.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/tui/__init__.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/tui/screens/__init__.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/tui/screens/agents.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/tui/screens/chat.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/tui/screens/dashboard.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/tui/screens/memory.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/tui/screens/metrics.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/tui/screens/sessions.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/tui/screens/workflows.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/tui/screens/worktrees.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/tui/widgets/__init__.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/tui/widgets/chat.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/tui/widgets/conductor.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/tui/widgets/menu.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/tui/widgets/message_panel.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/tui/widgets/review_gate.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/tui/widgets/task_tree.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/tui/widgets/token_budget.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/utils/__init__.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/utils/git.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/utils/id.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/utils/json_helpers.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/utils/logging.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/utils/machine_id.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/utils/metrics.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/utils/project_context.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/utils/project_init.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/utils/status.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/utils/validation.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/utils/version.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/workflows/__init__.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/workflows/approval_flow.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/workflows/artifact_actions.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/workflows/audit_helpers.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/workflows/autonomous_actions.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/workflows/definitions.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/workflows/evaluator.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/workflows/git_utils.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/workflows/hooks.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/workflows/llm_actions.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/workflows/mcp_actions.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/workflows/premature_stop.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/workflows/session_actions.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/workflows/state_actions.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/workflows/state_manager.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/workflows/stop_signal_actions.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/workflows/task_actions.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/workflows/templates.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/workflows/todo_actions.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/workflows/webhook.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/workflows/webhook_executor.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/worktrees/__init__.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/worktrees/git.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/worktrees/merge/__init__.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/worktrees/merge/conflict_parser.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby/worktrees/merge/resolver.py +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby.egg-info/dependency_links.txt +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby.egg-info/entry_points.txt +0 -0
- {gobby-0.2.5 → gobby-0.2.6}/src/gobby.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: gobby
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.6
|
|
4
4
|
Summary: A local-first daemon to unify your AI coding tools. Session tracking and handoffs across Claude Code, Gemini CLI, and Codex. An MCP proxy that discovers tools without flooding context. Task management with dependencies, validation, and TDD expansion. Agent spawning and worktree orchestration. Persistent memory, extensible workflows, and hooks.
|
|
5
5
|
Author-email: Josh Wilhelmi <josh@gobby.ai>
|
|
6
6
|
License-Expression: MIT
|
|
@@ -38,8 +38,9 @@ Requires-Dist: msgspec>=0.20.0
|
|
|
38
38
|
Requires-Dist: gitingest>=0.3.1
|
|
39
39
|
Requires-Dist: scikit-learn>=1.0.0
|
|
40
40
|
Requires-Dist: textual>=7.3.0
|
|
41
|
-
Requires-Dist: mem0ai
|
|
42
41
|
Requires-Dist: memu-py>=1.0.0
|
|
42
|
+
Provides-Extra: mem0
|
|
43
|
+
Requires-Dist: mem0ai; extra == "mem0"
|
|
43
44
|
Dynamic: license-file
|
|
44
45
|
|
|
45
46
|
<!-- markdownlint-disable MD033 MD041 -->
|
|
@@ -149,35 +150,92 @@ call_tool("gobby-worktrees", "spawn_agent_in_worktree", {
|
|
|
149
150
|
})
|
|
150
151
|
```
|
|
151
152
|
|
|
152
|
-
|
|
153
|
+
### 🔗 Claude Code Task Integration
|
|
154
|
+
|
|
155
|
+
Gobby transparently intercepts Claude Code's built-in task system (TaskCreate, TaskUpdate, etc.) and syncs operations to Gobby's persistent task store. Benefits:
|
|
156
|
+
|
|
157
|
+
- **Tasks persist** across sessions (unlike CC's session-scoped tasks)
|
|
158
|
+
- **Commit linking** — tasks auto-link to git commits
|
|
159
|
+
- **Validation gates** — define criteria for task completion
|
|
160
|
+
- **LLM expansion** — break complex tasks into subtasks
|
|
161
|
+
|
|
162
|
+
No configuration needed — just use Claude Code's native task tools and Gobby handles the rest.
|
|
163
|
+
|
|
164
|
+
### 📚 Skills System
|
|
165
|
+
|
|
166
|
+
Reusable instructions that teach agents how to perform specific tasks. Compatible with the [Agent Skills specification](https://agentskills.io) and SkillPort.
|
|
167
|
+
|
|
168
|
+
- **Core skills** bundled with Gobby for tasks, sessions, memory, workflows
|
|
169
|
+
- **Project skills** in `.gobby/skills/` for team-specific patterns
|
|
170
|
+
- **Install from anywhere** — GitHub repos, local paths, ZIP archives
|
|
171
|
+
- **Search and discovery** — TF-IDF and semantic search across your skill library
|
|
153
172
|
|
|
154
173
|
```bash
|
|
155
|
-
#
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
174
|
+
# Install a skill from GitHub
|
|
175
|
+
gobby skills install github:user/repo/skills/my-skill
|
|
176
|
+
|
|
177
|
+
# Search for relevant skills
|
|
178
|
+
gobby skills search "testing coverage"
|
|
179
|
+
```
|
|
180
|
+
|
|
181
|
+
## Installation
|
|
182
|
+
|
|
183
|
+
### Try it instantly
|
|
184
|
+
```bash
|
|
185
|
+
uvx gobby --help
|
|
186
|
+
```
|
|
187
|
+
|
|
188
|
+
### Install globally
|
|
189
|
+
```bash
|
|
190
|
+
# With uv (recommended)
|
|
191
|
+
uv tool install gobby
|
|
192
|
+
|
|
193
|
+
# With pipx
|
|
194
|
+
pipx install gobby
|
|
195
|
+
|
|
196
|
+
# With pip
|
|
197
|
+
pip install gobby
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
**Requirements:** Python 3.13+
|
|
159
201
|
|
|
202
|
+
## Quick Start
|
|
203
|
+
|
|
204
|
+
```bash
|
|
160
205
|
# Start the daemon
|
|
161
|
-
|
|
206
|
+
gobby start
|
|
162
207
|
|
|
163
208
|
# In your project directory
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
# Optional: install globally
|
|
168
|
-
uv pip install -e .
|
|
209
|
+
gobby init
|
|
210
|
+
gobby install # Installs hooks for detected CLIs
|
|
169
211
|
```
|
|
170
212
|
|
|
171
|
-
**Requirements:**
|
|
213
|
+
**Requirements:** At least one AI CLI ([Claude Code](https://claude.ai/code), [Gemini CLI](https://github.com/google-gemini/gemini-cli), or [Codex CLI](https://github.com/openai/codex))
|
|
172
214
|
|
|
173
215
|
Works with your Claude, Gemini, or Codex subscriptions—or bring your own API keys. Local model support coming soon.
|
|
174
216
|
|
|
175
217
|
## Configure Your AI CLI
|
|
176
218
|
|
|
177
|
-
Add Gobby as an MCP server:
|
|
219
|
+
Add Gobby as an MCP server. Choose the `command` and `args` that match your installation:
|
|
220
|
+
|
|
221
|
+
- **pip/pipx install**: `"command": "gobby"`, `"args": ["mcp-server"]`
|
|
222
|
+
- **uv tool install**: `"command": "uv"`, `"args": ["run", "gobby", "mcp-server"]`
|
|
178
223
|
|
|
179
224
|
**Claude Code** (`.mcp.json` or `~/.claude.json`):
|
|
180
225
|
|
|
226
|
+
```json
|
|
227
|
+
{
|
|
228
|
+
"mcpServers": {
|
|
229
|
+
"gobby": {
|
|
230
|
+
"command": "gobby",
|
|
231
|
+
"args": ["mcp-server"]
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
Or with uv:
|
|
238
|
+
|
|
181
239
|
```json
|
|
182
240
|
{
|
|
183
241
|
"mcpServers": {
|
|
@@ -195,8 +253,8 @@ Add Gobby as an MCP server:
|
|
|
195
253
|
{
|
|
196
254
|
"mcpServers": {
|
|
197
255
|
"gobby": {
|
|
198
|
-
"command": "
|
|
199
|
-
"args": ["
|
|
256
|
+
"command": "gobby",
|
|
257
|
+
"args": ["mcp-server"]
|
|
200
258
|
}
|
|
201
259
|
}
|
|
202
260
|
}
|
|
@@ -206,8 +264,8 @@ Add Gobby as an MCP server:
|
|
|
206
264
|
|
|
207
265
|
```toml
|
|
208
266
|
[mcp_servers.gobby]
|
|
209
|
-
command = "
|
|
210
|
-
args = ["
|
|
267
|
+
command = "gobby"
|
|
268
|
+
args = ["mcp-server"]
|
|
211
269
|
```
|
|
212
270
|
|
|
213
271
|
**Gemini Antigravity** (`~/.gemini/antigravity/mcp_config.json`):
|
|
@@ -256,7 +314,7 @@ AI CLI (Claude/Gemini/Codex)
|
|
|
256
314
|
Hook Dispatcher
|
|
257
315
|
│ HTTP POST
|
|
258
316
|
▼
|
|
259
|
-
Gobby Daemon (:
|
|
317
|
+
Gobby Daemon (:60887)
|
|
260
318
|
│
|
|
261
319
|
┌────┴────┐
|
|
262
320
|
▼ ▼
|
|
@@ -298,9 +356,12 @@ Gobby exposes tools via MCP that your AI coding assistant can use:
|
|
|
298
356
|
**Worktrees** (`gobby-worktrees`)
|
|
299
357
|
`create_worktree`, `spawn_agent_in_worktree`, `list_worktrees`
|
|
300
358
|
|
|
301
|
-
**MCP Proxy**
|
|
359
|
+
**MCP Proxy**
|
|
302
360
|
`list_mcp_servers`, `add_mcp_server`, `import_mcp_server`, `list_tools`, `get_tool_schema`, `call_tool`, `recommend_tools`
|
|
303
361
|
|
|
362
|
+
**Skills** (`gobby-skills`)
|
|
363
|
+
`list_skills`, `get_skill`, `search_skills`, `install_skill`, `remove_skill`, `update_skill`
|
|
364
|
+
|
|
304
365
|
## For AI Agents
|
|
305
366
|
|
|
306
367
|
**If you're an AI agent reading this:** Check out [docs/AGENT_INSTRUCTIONS.md](docs/AGENT_INSTRUCTIONS.md) for your operating procedures, and [CLAUDE.md](CLAUDE.md) for Claude Code-specific guidance.
|
|
@@ -105,35 +105,92 @@ call_tool("gobby-worktrees", "spawn_agent_in_worktree", {
|
|
|
105
105
|
})
|
|
106
106
|
```
|
|
107
107
|
|
|
108
|
-
|
|
108
|
+
### 🔗 Claude Code Task Integration
|
|
109
|
+
|
|
110
|
+
Gobby transparently intercepts Claude Code's built-in task system (TaskCreate, TaskUpdate, etc.) and syncs operations to Gobby's persistent task store. Benefits:
|
|
111
|
+
|
|
112
|
+
- **Tasks persist** across sessions (unlike CC's session-scoped tasks)
|
|
113
|
+
- **Commit linking** — tasks auto-link to git commits
|
|
114
|
+
- **Validation gates** — define criteria for task completion
|
|
115
|
+
- **LLM expansion** — break complex tasks into subtasks
|
|
116
|
+
|
|
117
|
+
No configuration needed — just use Claude Code's native task tools and Gobby handles the rest.
|
|
118
|
+
|
|
119
|
+
### 📚 Skills System
|
|
120
|
+
|
|
121
|
+
Reusable instructions that teach agents how to perform specific tasks. Compatible with the [Agent Skills specification](https://agentskills.io) and SkillPort.
|
|
122
|
+
|
|
123
|
+
- **Core skills** bundled with Gobby for tasks, sessions, memory, workflows
|
|
124
|
+
- **Project skills** in `.gobby/skills/` for team-specific patterns
|
|
125
|
+
- **Install from anywhere** — GitHub repos, local paths, ZIP archives
|
|
126
|
+
- **Search and discovery** — TF-IDF and semantic search across your skill library
|
|
109
127
|
|
|
110
128
|
```bash
|
|
111
|
-
#
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
129
|
+
# Install a skill from GitHub
|
|
130
|
+
gobby skills install github:user/repo/skills/my-skill
|
|
131
|
+
|
|
132
|
+
# Search for relevant skills
|
|
133
|
+
gobby skills search "testing coverage"
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
## Installation
|
|
137
|
+
|
|
138
|
+
### Try it instantly
|
|
139
|
+
```bash
|
|
140
|
+
uvx gobby --help
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
### Install globally
|
|
144
|
+
```bash
|
|
145
|
+
# With uv (recommended)
|
|
146
|
+
uv tool install gobby
|
|
147
|
+
|
|
148
|
+
# With pipx
|
|
149
|
+
pipx install gobby
|
|
150
|
+
|
|
151
|
+
# With pip
|
|
152
|
+
pip install gobby
|
|
153
|
+
```
|
|
154
|
+
|
|
155
|
+
**Requirements:** Python 3.13+
|
|
115
156
|
|
|
157
|
+
## Quick Start
|
|
158
|
+
|
|
159
|
+
```bash
|
|
116
160
|
# Start the daemon
|
|
117
|
-
|
|
161
|
+
gobby start
|
|
118
162
|
|
|
119
163
|
# In your project directory
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
# Optional: install globally
|
|
124
|
-
uv pip install -e .
|
|
164
|
+
gobby init
|
|
165
|
+
gobby install # Installs hooks for detected CLIs
|
|
125
166
|
```
|
|
126
167
|
|
|
127
|
-
**Requirements:**
|
|
168
|
+
**Requirements:** At least one AI CLI ([Claude Code](https://claude.ai/code), [Gemini CLI](https://github.com/google-gemini/gemini-cli), or [Codex CLI](https://github.com/openai/codex))
|
|
128
169
|
|
|
129
170
|
Works with your Claude, Gemini, or Codex subscriptions—or bring your own API keys. Local model support coming soon.
|
|
130
171
|
|
|
131
172
|
## Configure Your AI CLI
|
|
132
173
|
|
|
133
|
-
Add Gobby as an MCP server:
|
|
174
|
+
Add Gobby as an MCP server. Choose the `command` and `args` that match your installation:
|
|
175
|
+
|
|
176
|
+
- **pip/pipx install**: `"command": "gobby"`, `"args": ["mcp-server"]`
|
|
177
|
+
- **uv tool install**: `"command": "uv"`, `"args": ["run", "gobby", "mcp-server"]`
|
|
134
178
|
|
|
135
179
|
**Claude Code** (`.mcp.json` or `~/.claude.json`):
|
|
136
180
|
|
|
181
|
+
```json
|
|
182
|
+
{
|
|
183
|
+
"mcpServers": {
|
|
184
|
+
"gobby": {
|
|
185
|
+
"command": "gobby",
|
|
186
|
+
"args": ["mcp-server"]
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
Or with uv:
|
|
193
|
+
|
|
137
194
|
```json
|
|
138
195
|
{
|
|
139
196
|
"mcpServers": {
|
|
@@ -151,8 +208,8 @@ Add Gobby as an MCP server:
|
|
|
151
208
|
{
|
|
152
209
|
"mcpServers": {
|
|
153
210
|
"gobby": {
|
|
154
|
-
"command": "
|
|
155
|
-
"args": ["
|
|
211
|
+
"command": "gobby",
|
|
212
|
+
"args": ["mcp-server"]
|
|
156
213
|
}
|
|
157
214
|
}
|
|
158
215
|
}
|
|
@@ -162,8 +219,8 @@ Add Gobby as an MCP server:
|
|
|
162
219
|
|
|
163
220
|
```toml
|
|
164
221
|
[mcp_servers.gobby]
|
|
165
|
-
command = "
|
|
166
|
-
args = ["
|
|
222
|
+
command = "gobby"
|
|
223
|
+
args = ["mcp-server"]
|
|
167
224
|
```
|
|
168
225
|
|
|
169
226
|
**Gemini Antigravity** (`~/.gemini/antigravity/mcp_config.json`):
|
|
@@ -212,7 +269,7 @@ AI CLI (Claude/Gemini/Codex)
|
|
|
212
269
|
Hook Dispatcher
|
|
213
270
|
│ HTTP POST
|
|
214
271
|
▼
|
|
215
|
-
Gobby Daemon (:
|
|
272
|
+
Gobby Daemon (:60887)
|
|
216
273
|
│
|
|
217
274
|
┌────┴────┐
|
|
218
275
|
▼ ▼
|
|
@@ -254,9 +311,12 @@ Gobby exposes tools via MCP that your AI coding assistant can use:
|
|
|
254
311
|
**Worktrees** (`gobby-worktrees`)
|
|
255
312
|
`create_worktree`, `spawn_agent_in_worktree`, `list_worktrees`
|
|
256
313
|
|
|
257
|
-
**MCP Proxy**
|
|
314
|
+
**MCP Proxy**
|
|
258
315
|
`list_mcp_servers`, `add_mcp_server`, `import_mcp_server`, `list_tools`, `get_tool_schema`, `call_tool`, `recommend_tools`
|
|
259
316
|
|
|
317
|
+
**Skills** (`gobby-skills`)
|
|
318
|
+
`list_skills`, `get_skill`, `search_skills`, `install_skill`, `remove_skill`, `update_skill`
|
|
319
|
+
|
|
260
320
|
## For AI Agents
|
|
261
321
|
|
|
262
322
|
**If you're an AI agent reading this:** Check out [docs/AGENT_INSTRUCTIONS.md](docs/AGENT_INSTRUCTIONS.md) for your operating procedures, and [CLAUDE.md](CLAUDE.md) for Claude Code-specific guidance.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "gobby"
|
|
3
|
-
version = "0.2.
|
|
3
|
+
version = "0.2.6"
|
|
4
4
|
description = "A local-first daemon to unify your AI coding tools. Session tracking and handoffs across Claude Code, Gemini CLI, and Codex. An MCP proxy that discovers tools without flooding context. Task management with dependencies, validation, and TDD expansion. Agent spawning and worktree orchestration. Persistent memory, extensible workflows, and hooks."
|
|
5
5
|
readme = "README.md"
|
|
6
6
|
license = "MIT"
|
|
@@ -40,10 +40,13 @@ dependencies = [
|
|
|
40
40
|
# scikit-learn for TF-IDF memory search
|
|
41
41
|
"scikit-learn>=1.0.0",
|
|
42
42
|
"textual>=7.3.0",
|
|
43
|
-
|
|
43
|
+
# mem0ai moved to optional [mem0] extra due to CVE-2026-0994 (protobuf<=6.33.4 vulnerable)
|
|
44
44
|
"memu-py>=1.0.0",
|
|
45
45
|
]
|
|
46
46
|
|
|
47
|
+
[project.optional-dependencies]
|
|
48
|
+
mem0 = ["mem0ai"]
|
|
49
|
+
|
|
47
50
|
[project.scripts]
|
|
48
51
|
gobby = "gobby.cli:cli"
|
|
49
52
|
|
|
@@ -90,6 +93,8 @@ markers = [
|
|
|
90
93
|
"slow: marks tests as slow (deselect with '-m \"not slow\"')",
|
|
91
94
|
"integration: marks tests as integration tests",
|
|
92
95
|
"e2e: marks tests as end-to-end tests",
|
|
96
|
+
"cli: marks tests as CLI command tests",
|
|
97
|
+
"no_config_protection: skip config protection for this test",
|
|
93
98
|
]
|
|
94
99
|
filterwarnings = [
|
|
95
100
|
# Ignore coroutine warnings from fire-and-forget async patterns in hook/webhook code
|
|
@@ -104,6 +109,8 @@ filterwarnings = [
|
|
|
104
109
|
"ignore:unclosed database:ResourceWarning:coverage",
|
|
105
110
|
"ignore:unclosed database:ResourceWarning:unittest.mock",
|
|
106
111
|
"ignore:unclosed database:ResourceWarning",
|
|
112
|
+
# Ignore fork() deprecation warning from embedded spawner tests (expected on macOS)
|
|
113
|
+
"ignore:This process.*is multi-threaded.*use of fork:DeprecationWarning",
|
|
107
114
|
]
|
|
108
115
|
|
|
109
116
|
[tool.ruff]
|
|
@@ -191,11 +191,17 @@ class ClaudeCodeAdapter(BaseAdapter):
|
|
|
191
191
|
additional_context_parts.append(response.context)
|
|
192
192
|
|
|
193
193
|
# Add session identifiers from metadata
|
|
194
|
+
# Note: "session_id" in metadata is Gobby's internal platform session ID
|
|
195
|
+
# "external_id" in metadata is the CLI's session UUID
|
|
194
196
|
if response.metadata:
|
|
195
|
-
|
|
196
|
-
|
|
197
|
+
gobby_session_id = response.metadata.get("session_id")
|
|
198
|
+
external_id = response.metadata.get("external_id")
|
|
199
|
+
if gobby_session_id:
|
|
197
200
|
# Build context with all available identifiers
|
|
198
|
-
|
|
201
|
+
# Use clear naming: Gobby Session ID for MCP calls, External ID for transcripts
|
|
202
|
+
context_lines = [f"Gobby Session ID: {gobby_session_id}"]
|
|
203
|
+
if external_id:
|
|
204
|
+
context_lines.append(f"External ID: {external_id}")
|
|
199
205
|
if response.metadata.get("parent_session_id"):
|
|
200
206
|
context_lines.append(
|
|
201
207
|
f"parent_session_id: {response.metadata['parent_session_id']}"
|
|
@@ -227,7 +233,10 @@ class ClaudeCodeAdapter(BaseAdapter):
|
|
|
227
233
|
additional_context_parts.append("\n".join(context_lines))
|
|
228
234
|
|
|
229
235
|
# Build hookSpecificOutput if we have any context to inject
|
|
230
|
-
|
|
236
|
+
# Only include hookSpecificOutput for hook types that Claude Code's schema accepts
|
|
237
|
+
# Valid hookEventName values: PreToolUse, UserPromptSubmit, PostToolUse
|
|
238
|
+
valid_hook_event_names = {"PreToolUse", "UserPromptSubmit", "PostToolUse"}
|
|
239
|
+
if additional_context_parts and hook_event_name in valid_hook_event_names:
|
|
231
240
|
result["hookSpecificOutput"] = {
|
|
232
241
|
"hookEventName": hook_event_name,
|
|
233
242
|
"additionalContext": "\n\n".join(additional_context_parts),
|
|
@@ -775,6 +775,28 @@ class CodexAdapter(BaseAdapter):
|
|
|
775
775
|
"item/completed": HookEventType.AFTER_TOOL,
|
|
776
776
|
}
|
|
777
777
|
|
|
778
|
+
# Tool name mapping: Codex tool names -> canonical CC-style names
|
|
779
|
+
# Codex uses different tool names - normalize to Claude Code conventions
|
|
780
|
+
# so block_tools rules work across CLIs
|
|
781
|
+
TOOL_MAP: dict[str, str] = {
|
|
782
|
+
# File operations
|
|
783
|
+
"read_file": "Read",
|
|
784
|
+
"ReadFile": "Read",
|
|
785
|
+
"write_file": "Write",
|
|
786
|
+
"WriteFile": "Write",
|
|
787
|
+
"edit_file": "Edit",
|
|
788
|
+
"EditFile": "Edit",
|
|
789
|
+
# Shell
|
|
790
|
+
"run_shell_command": "Bash",
|
|
791
|
+
"RunShellCommand": "Bash",
|
|
792
|
+
"commandExecution": "Bash",
|
|
793
|
+
# Search
|
|
794
|
+
"glob": "Glob",
|
|
795
|
+
"grep": "Grep",
|
|
796
|
+
"GlobTool": "Glob",
|
|
797
|
+
"GrepTool": "Grep",
|
|
798
|
+
}
|
|
799
|
+
|
|
778
800
|
# Item types that represent tool operations
|
|
779
801
|
TOOL_ITEM_TYPES = {"commandExecution", "fileChange", "mcpToolCall"}
|
|
780
802
|
|
|
@@ -814,6 +836,19 @@ class CodexAdapter(BaseAdapter):
|
|
|
814
836
|
self._machine_id = _get_machine_id()
|
|
815
837
|
return self._machine_id
|
|
816
838
|
|
|
839
|
+
def normalize_tool_name(self, codex_tool_name: str) -> str:
|
|
840
|
+
"""Normalize Codex tool name to canonical CC-style format.
|
|
841
|
+
|
|
842
|
+
This ensures block_tools rules work consistently across CLIs.
|
|
843
|
+
|
|
844
|
+
Args:
|
|
845
|
+
codex_tool_name: Tool name from Codex CLI.
|
|
846
|
+
|
|
847
|
+
Returns:
|
|
848
|
+
Normalized tool name (e.g., "Bash", "Read", "Write", "Edit").
|
|
849
|
+
"""
|
|
850
|
+
return self.TOOL_MAP.get(codex_tool_name, codex_tool_name)
|
|
851
|
+
|
|
817
852
|
def attach_to_client(self, codex_client: CodexAppServerClient) -> None:
|
|
818
853
|
"""Attach to an existing CodexAppServerClient for event handling.
|
|
819
854
|
|
|
@@ -876,14 +911,17 @@ class CodexAdapter(BaseAdapter):
|
|
|
876
911
|
thread_id = params.get("threadId", "")
|
|
877
912
|
item_id = params.get("itemId", "")
|
|
878
913
|
|
|
879
|
-
# Determine tool name from method
|
|
914
|
+
# Determine tool name from method and normalize to CC-style
|
|
880
915
|
if "commandExecution" in method:
|
|
881
|
-
|
|
916
|
+
original_tool = "commandExecution"
|
|
917
|
+
tool_name = self.normalize_tool_name(original_tool) # -> "Bash"
|
|
882
918
|
tool_input = params.get("parsedCmd", params.get("command", ""))
|
|
883
919
|
elif "fileChange" in method:
|
|
884
|
-
|
|
920
|
+
original_tool = "fileChange"
|
|
921
|
+
tool_name = "Write" # File changes are writes
|
|
885
922
|
tool_input = params.get("changes", [])
|
|
886
923
|
else:
|
|
924
|
+
original_tool = "unknown"
|
|
887
925
|
tool_name = "unknown"
|
|
888
926
|
tool_input = params
|
|
889
927
|
|
|
@@ -905,6 +943,8 @@ class CodexAdapter(BaseAdapter):
|
|
|
905
943
|
"requires_response": True,
|
|
906
944
|
"item_id": item_id,
|
|
907
945
|
"approval_method": method,
|
|
946
|
+
"original_tool_name": original_tool,
|
|
947
|
+
"normalized_tool_name": tool_name,
|
|
908
948
|
},
|
|
909
949
|
)
|
|
910
950
|
|
|
@@ -607,6 +607,14 @@ class AgentRunner:
|
|
|
607
607
|
else:
|
|
608
608
|
self._session_storage.update_status(child_session.id, "failed")
|
|
609
609
|
|
|
610
|
+
# Persist cost to session storage for budget tracking
|
|
611
|
+
if result.cost_info and result.cost_info.total_cost > 0:
|
|
612
|
+
self._session_storage.add_cost(child_session.id, result.cost_info.total_cost)
|
|
613
|
+
self.logger.debug(
|
|
614
|
+
f"Persisted cost ${result.cost_info.total_cost:.4f} "
|
|
615
|
+
f"for session {child_session.id}"
|
|
616
|
+
)
|
|
617
|
+
|
|
610
618
|
# Remove from in-memory tracking
|
|
611
619
|
self._untrack_running_agent(agent_run.id)
|
|
612
620
|
|
|
@@ -8,6 +8,8 @@ from gobby.config.app import load_config
|
|
|
8
8
|
|
|
9
9
|
from .agents import agents
|
|
10
10
|
from .artifacts import artifacts
|
|
11
|
+
from .clones import clones
|
|
12
|
+
from .conductor import conductor
|
|
11
13
|
from .daemon import restart, start, status, stop
|
|
12
14
|
from .extensions import hooks, plugins, webhooks
|
|
13
15
|
from .github import github
|
|
@@ -20,6 +22,7 @@ from .memory import memory
|
|
|
20
22
|
from .merge import merge
|
|
21
23
|
from .projects import projects
|
|
22
24
|
from .sessions import sessions
|
|
25
|
+
from .skills import skills
|
|
23
26
|
from .tasks import tasks
|
|
24
27
|
from .tui import ui
|
|
25
28
|
from .workflows import workflows
|
|
@@ -52,6 +55,7 @@ cli.add_command(uninstall)
|
|
|
52
55
|
cli.add_command(tasks)
|
|
53
56
|
cli.add_command(memory)
|
|
54
57
|
cli.add_command(sessions)
|
|
58
|
+
cli.add_command(skills)
|
|
55
59
|
cli.add_command(agents)
|
|
56
60
|
cli.add_command(worktrees)
|
|
57
61
|
cli.add_command(mcp_proxy)
|
|
@@ -61,6 +65,8 @@ cli.add_command(merge)
|
|
|
61
65
|
cli.add_command(artifacts)
|
|
62
66
|
cli.add_command(github)
|
|
63
67
|
cli.add_command(linear)
|
|
68
|
+
cli.add_command(clones)
|
|
69
|
+
cli.add_command(conductor)
|
|
64
70
|
cli.add_command(hooks)
|
|
65
71
|
cli.add_command(plugins)
|
|
66
72
|
cli.add_command(webhooks)
|