audiagentic 0.2.1__py3-none-any.whl
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.
- audiagentic/__init__.py +11 -0
- audiagentic/commands/__init__.py +4 -0
- audiagentic/commands/bootstrap.py +199 -0
- audiagentic/commands/component.py +115 -0
- audiagentic/commands/gateway.py +204 -0
- audiagentic/commands/internal.py +36 -0
- audiagentic/commands/launch.py +183 -0
- audiagentic/commands/update.py +11 -0
- audiagentic/commands/workflow.py +62 -0
- audiagentic/components/__init__.py +1 -0
- audiagentic/components/agent_jobs/__init__.py +7 -0
- audiagentic/components/agent_jobs/approvals.py +345 -0
- audiagentic/components/agent_jobs/dead_letter.py +115 -0
- audiagentic/components/agent_jobs/event_observer.py +13 -0
- audiagentic/components/agent_jobs/event_triggers.py +224 -0
- audiagentic/components/agent_jobs/packet_runner.py +59 -0
- audiagentic/components/agent_jobs/prompt_aliases.py +53 -0
- audiagentic/components/agent_jobs/prompt_context.py +447 -0
- audiagentic/components/agent_jobs/prompt_launch.py +311 -0
- audiagentic/components/agent_jobs/prompt_parser.py +337 -0
- audiagentic/components/agent_jobs/prompt_syntax.py +41 -0
- audiagentic/components/agent_jobs/prompt_targets.py +62 -0
- audiagentic/components/agent_jobs/prompt_templates.py +165 -0
- audiagentic/components/agent_jobs/session_input_store.py +138 -0
- audiagentic/components/agent_jobs/workflows.yaml +23 -0
- audiagentic/components/agents/__init__.py +2 -0
- audiagentic/components/agents/agents_paths.py +217 -0
- audiagentic/components/agents/capabilities/__init__.py +5 -0
- audiagentic/components/agents/capabilities/contracts.py +31 -0
- audiagentic/components/agents/capabilities/resolver.py +61 -0
- audiagentic/components/agents/capabilities/source_filter.py +9 -0
- audiagentic/components/agents/capabilities/vocabulary.py +20 -0
- audiagentic/components/agents/configuration/__init__.py +15 -0
- audiagentic/components/agents/configuration/configuration_api.py +48 -0
- audiagentic/components/agents/configuration/contracts.py +112 -0
- audiagentic/components/agents/configuration/global_catalog.py +134 -0
- audiagentic/components/agents/configuration/management.py +332 -0
- audiagentic/components/agents/configuration/migration.py +68 -0
- audiagentic/components/agents/configuration/repository.py +165 -0
- audiagentic/components/agents/configuration/resolution.py +155 -0
- audiagentic/components/agents/configuration/validation.py +50 -0
- audiagentic/components/agents/context/__init__.py +1 -0
- audiagentic/components/agents/context/contracts.py +26 -0
- audiagentic/components/agents/context/service.py +33 -0
- audiagentic/components/agents/context/store.py +62 -0
- audiagentic/components/agents/contracts/__init__.py +1 -0
- audiagentic/components/agents/contracts/_worker_protocol_validation.py +231 -0
- audiagentic/components/agents/contracts/execution_context.py +644 -0
- audiagentic/components/agents/contracts/worker_protocol.py +425 -0
- audiagentic/components/agents/export/__init__.py +1 -0
- audiagentic/components/agents/export/standard_agents/__init__.py +6 -0
- audiagentic/components/agents/export/standard_agents/projector.py +34 -0
- audiagentic/components/agents/export/standard_agents/typescript.py +9 -0
- audiagentic/components/agents/gateway/__init__.py +0 -0
- audiagentic/components/agents/gateway/activity.py +123 -0
- audiagentic/components/agents/gateway/admission/__init__.py +1 -0
- audiagentic/components/agents/gateway/admission/context.py +38 -0
- audiagentic/components/agents/gateway/admission/instructions.py +77 -0
- audiagentic/components/agents/gateway/api.py +1762 -0
- audiagentic/components/agents/gateway/application.py +268 -0
- audiagentic/components/agents/gateway/client.py +444 -0
- audiagentic/components/agents/gateway/diagnostics.py +472 -0
- audiagentic/components/agents/gateway/event_topics.py +35 -0
- audiagentic/components/agents/gateway/events.py +175 -0
- audiagentic/components/agents/gateway/ingress.py +159 -0
- audiagentic/components/agents/gateway/instances.py +53 -0
- audiagentic/components/agents/gateway/management_api.py +290 -0
- audiagentic/components/agents/gateway/mapping.py +34 -0
- audiagentic/components/agents/gateway/operations/__init__.py +35 -0
- audiagentic/components/agents/gateway/operations/application.py +77 -0
- audiagentic/components/agents/gateway/operations/archive.py +189 -0
- audiagentic/components/agents/gateway/operations/contracts.py +72 -0
- audiagentic/components/agents/gateway/operations/evidence.py +62 -0
- audiagentic/components/agents/gateway/operations/executor.py +69 -0
- audiagentic/components/agents/gateway/operations/notifier.py +24 -0
- audiagentic/components/agents/gateway/operations/operation_store.py +348 -0
- audiagentic/components/agents/gateway/operations/pump.py +39 -0
- audiagentic/components/agents/gateway/operations/reconcile.py +106 -0
- audiagentic/components/agents/gateway/operations/retention_policy.py +71 -0
- audiagentic/components/agents/gateway/output.py +737 -0
- audiagentic/components/agents/gateway/profiles.py +563 -0
- audiagentic/components/agents/gateway/queue/__init__.py +19 -0
- audiagentic/components/agents/gateway/queue/backend.py +223 -0
- audiagentic/components/agents/gateway/queue/backend_factory.py +30 -0
- audiagentic/components/agents/gateway/queue/capacity.py +245 -0
- audiagentic/components/agents/gateway/queue/capacity_policy.py +88 -0
- audiagentic/components/agents/gateway/queue/contention.py +231 -0
- audiagentic/components/agents/gateway/queue/dispatch.py +698 -0
- audiagentic/components/agents/gateway/queue/outbox.py +89 -0
- audiagentic/components/agents/gateway/queue/pending.py +146 -0
- audiagentic/components/agents/gateway/queue/progress.py +343 -0
- audiagentic/components/agents/gateway/queue/queue.py +1340 -0
- audiagentic/components/agents/gateway/queue/recovery.py +233 -0
- audiagentic/components/agents/gateway/queue/watchdog_policy.py +75 -0
- audiagentic/components/agents/gateway/queue/watchdog_registry.py +55 -0
- audiagentic/components/agents/gateway/queue/work_index.py +480 -0
- audiagentic/components/agents/gateway/queue/worker.py +348 -0
- audiagentic/components/agents/gateway/queue/worker_host.py +309 -0
- audiagentic/components/agents/gateway/remote_client.py +563 -0
- audiagentic/components/agents/gateway/service/__init__.py +0 -0
- audiagentic/components/agents/gateway/service/application.py +725 -0
- audiagentic/components/agents/gateway/service/bootstrap.py +121 -0
- audiagentic/components/agents/gateway/service/client_icons/01_robot.png +0 -0
- audiagentic/components/agents/gateway/service/client_icons/02_sparkle.png +0 -0
- audiagentic/components/agents/gateway/service/client_icons/03_compass.png +0 -0
- audiagentic/components/agents/gateway/service/client_icons/04_paper_plane.png +0 -0
- audiagentic/components/agents/gateway/service/client_icons/05_cube.png +0 -0
- audiagentic/components/agents/gateway/service/client_icons/06_shield.png +0 -0
- audiagentic/components/agents/gateway/service/client_icons/07_chat.png +0 -0
- audiagentic/components/agents/gateway/service/client_icons/08_user.png +0 -0
- audiagentic/components/agents/gateway/service/client_icons/09_wave.png +0 -0
- audiagentic/components/agents/gateway/service/client_icons/10_network.png +0 -0
- audiagentic/components/agents/gateway/service/client_icons/11_lightning.png +0 -0
- audiagentic/components/agents/gateway/service/client_icons/12_antenna.png +0 -0
- audiagentic/components/agents/gateway/service/client_icons/13_wrench.png +0 -0
- audiagentic/components/agents/gateway/service/client_icons/14_eye.png +0 -0
- audiagentic/components/agents/gateway/service/client_icons/15_puzzle.png +0 -0
- audiagentic/components/agents/gateway/service/client_icons/16_key.png +0 -0
- audiagentic/components/agents/gateway/service/client_icons/17_planet.png +0 -0
- audiagentic/components/agents/gateway/service/client_icons/18_terminal.png +0 -0
- audiagentic/components/agents/gateway/service/client_icons/19_beacon.png +0 -0
- audiagentic/components/agents/gateway/service/client_icons/20_chip.png +0 -0
- audiagentic/components/agents/gateway/service/client_icons/21_satellite.png +0 -0
- audiagentic/components/agents/gateway/service/client_icons/22_pin.png +0 -0
- audiagentic/components/agents/gateway/service/client_icons/23_crown.png +0 -0
- audiagentic/components/agents/gateway/service/client_icons/24_diamond.png +0 -0
- audiagentic/components/agents/gateway/service/client_icons.py +29 -0
- audiagentic/components/agents/gateway/service/contract.py +21 -0
- audiagentic/components/agents/gateway/service/dashboard.py +679 -0
- audiagentic/components/agents/gateway/service/dashboard_images.py +81 -0
- audiagentic/components/agents/gateway/service/host.py +385 -0
- audiagentic/components/agents/gateway/service/http_transport.py +301 -0
- audiagentic/components/agents/gateway/service/known_projects.py +368 -0
- audiagentic/components/agents/gateway/service/lifecycle.py +376 -0
- audiagentic/components/agents/gateway/service/process.py +56 -0
- audiagentic/components/agents/gateway/session/__init__.py +3 -0
- audiagentic/components/agents/gateway/session/bindings.py +682 -0
- audiagentic/components/agents/gateway/session/client_defaults.py +292 -0
- audiagentic/components/agents/gateway/session/console_trace.py +220 -0
- audiagentic/components/agents/gateway/session/controls.py +69 -0
- audiagentic/components/agents/gateway/session/conversation_owner.py +32 -0
- audiagentic/components/agents/gateway/session/dispatch.py +1167 -0
- audiagentic/components/agents/gateway/session/idle_grace.py +14 -0
- audiagentic/components/agents/gateway/session/orphan.py +68 -0
- audiagentic/components/agents/gateway/session/relocation.py +63 -0
- audiagentic/components/agents/gateway/session/resume.py +250 -0
- audiagentic/components/agents/gateway/session/retention.py +66 -0
- audiagentic/components/agents/gateway/session/root_registry.py +51 -0
- audiagentic/components/agents/gateway/session/sessions.py +3036 -0
- audiagentic/components/agents/gateway/session/sessions_store.py +1002 -0
- audiagentic/components/agents/gateway/session/turn_events.py +292 -0
- audiagentic/components/agents/gateway/store/__init__.py +117 -0
- audiagentic/components/agents/gateway/store/_admission.py +249 -0
- audiagentic/components/agents/gateway/store/_records.py +788 -0
- audiagentic/components/agents/gateway/store/_shared.py +177 -0
- audiagentic/components/agents/gateway/store/_transitions.py +1622 -0
- audiagentic/components/agents/mcp/__init__.py +0 -0
- audiagentic/components/agents/mcp/admin_mcp.py +92 -0
- audiagentic/components/agents/mcp/config_mcp.py +187 -0
- audiagentic/components/agents/mcp/gateway_mcp.py +409 -0
- audiagentic/components/agents/mcp/runtime_mcp.py +156 -0
- audiagentic/components/agents/models/__init__.py +0 -0
- audiagentic/components/agents/models/agent_definition.py +243 -0
- audiagentic/components/agents/models/execution_profile.py +210 -0
- audiagentic/components/agents/models/prompt_definition.py +100 -0
- audiagentic/components/agents/models/role.py +178 -0
- audiagentic/components/agents/protocols/__init__.py +1 -0
- audiagentic/components/agents/protocols/a2a/__init__.py +5 -0
- audiagentic/components/agents/protocols/a2a/agent_card.py +14 -0
- audiagentic/components/agents/protocols/a2a/mapping.py +19 -0
- audiagentic/components/agents/protocols/a2a/server.py +79 -0
- audiagentic/components/agents/protocols/acp/__init__.py +5 -0
- audiagentic/components/agents/protocols/acp/agent.py +127 -0
- audiagentic/components/agents/protocols/acp/mapping.py +40 -0
- audiagentic/components/agents/protocols/acp/server.py +8 -0
- audiagentic/components/agents/status/__init__.py +0 -0
- audiagentic/components/agents/status/diagnostics_projection.py +129 -0
- audiagentic/components/agents/status/harness_status_evidence.py +326 -0
- audiagentic/components/agents/status/harness_status_observer_ingress.py +343 -0
- audiagentic/components/agents/status/session_lifecycle_projection.py +769 -0
- audiagentic/components/agents/status/status_projection.py +158 -0
- audiagentic/components/agents/status/task_status_v4.py +217 -0
- audiagentic/components/agents/status/terminal_quality.py +517 -0
- audiagentic/components/agents/work/__init__.py +24 -0
- audiagentic/components/agents/work/contracts.py +50 -0
- audiagentic/components/agents/work/delegation.py +41 -0
- audiagentic/components/agents/work/event_adapter.py +69 -0
- audiagentic/components/agents/work/event_failures.py +51 -0
- audiagentic/components/agents/work/event_ingress.py +124 -0
- audiagentic/components/agents/work/event_observer.py +147 -0
- audiagentic/components/agents/work/ingress.py +39 -0
- audiagentic/components/agents/work/inputs.py +41 -0
- audiagentic/components/agents/work/interactions.py +51 -0
- audiagentic/components/agents/work/reconcile.py +82 -0
- audiagentic/components/agents/work/reviews.py +35 -0
- audiagentic/components/agents/work/service.py +136 -0
- audiagentic/components/agents/work/store.py +114 -0
- audiagentic/components/agents/work/triggers.py +46 -0
- audiagentic/components/agents/work/work_api.py +170 -0
- audiagentic/components/agents/workflows.yaml +90 -0
- audiagentic/components/coding_lsp/__init__.py +1 -0
- audiagentic/components/coding_lsp/coding_lsp_bootstrap.py +267 -0
- audiagentic/components/coding_lsp/coding_lsp_config.py +221 -0
- audiagentic/components/coding_lsp/file_matching.py +24 -0
- audiagentic/components/coding_lsp/git_hooks_sync.py +267 -0
- audiagentic/components/coding_lsp/language_registry.py +261 -0
- audiagentic/components/coding_lsp/language_servers_sync.py +394 -0
- audiagentic/components/coding_lsp/lint_projection.py +292 -0
- audiagentic/components/coding_lsp/lsp_api.py +212 -0
- audiagentic/components/coding_lsp/lsp_bridge.py +391 -0
- audiagentic/components/coding_lsp/lsp_config_api.py +526 -0
- audiagentic/components/coding_lsp/lsp_constants.py +162 -0
- audiagentic/components/coding_lsp/lsp_diagnostics.py +343 -0
- audiagentic/components/coding_lsp/lsp_edit_ops.py +155 -0
- audiagentic/components/coding_lsp/lsp_lifecycle.py +379 -0
- audiagentic/components/coding_lsp/lsp_manage_mcp.py +129 -0
- audiagentic/components/coding_lsp/lsp_mcp.py +146 -0
- audiagentic/components/coding_lsp/lsp_protocol_ops.py +337 -0
- audiagentic/components/coding_lsp/lsp_session_manager.py +201 -0
- audiagentic/components/coding_lsp/lsp_session_resolution.py +369 -0
- audiagentic/components/coding_lsp/lsp_status_ops.py +120 -0
- audiagentic/components/coding_lsp/runtime_resolver.py +87 -0
- audiagentic/components/coding_lsp/uri_utils.py +149 -0
- audiagentic/components/ledger/__init__.py +2 -0
- audiagentic/components/ledger/archive.py +93 -0
- audiagentic/components/ledger/audit.py +37 -0
- audiagentic/components/ledger/current_summary.py +36 -0
- audiagentic/components/ledger/event_outbox.py +133 -0
- audiagentic/components/ledger/events.py +63 -0
- audiagentic/components/ledger/fragments.py +121 -0
- audiagentic/components/ledger/ledger_api.py +256 -0
- audiagentic/components/ledger/ledger_bootstrap.py +61 -0
- audiagentic/components/ledger/ledger_events.py +36 -0
- audiagentic/components/ledger/ledger_manage_mcp.py +27 -0
- audiagentic/components/ledger/ledger_mcp.py +77 -0
- audiagentic/components/ledger/paths.py +112 -0
- audiagentic/components/ledger/sync.py +208 -0
- audiagentic/components/memory/__init__.py +1 -0
- audiagentic/components/memory/hindsight/__init__.py +7 -0
- audiagentic/components/memory/hindsight/export.py +107 -0
- audiagentic/components/memory/hindsight/mcp_recipe.py +52 -0
- audiagentic/components/memory/hindsight/provision.py +502 -0
- audiagentic/components/memory/memory_api.py +226 -0
- audiagentic/components/memory/memory_mcp.py +88 -0
- audiagentic/components/memory/memory_observer.py +67 -0
- audiagentic/components/planning/__init__.py +0 -0
- audiagentic/components/planning/contracts.py +128 -0
- audiagentic/components/planning/durability.py +258 -0
- audiagentic/components/planning/events.py +298 -0
- audiagentic/components/planning/identity.py +42 -0
- audiagentic/components/planning/integrity.py +270 -0
- audiagentic/components/planning/item_store.py +896 -0
- audiagentic/components/planning/items.py +678 -0
- audiagentic/components/planning/planning_api.py +294 -0
- audiagentic/components/planning/planning_manage_mcp.py +94 -0
- audiagentic/components/planning/planning_mcp.py +193 -0
- audiagentic/components/planning/planning_paths.py +79 -0
- audiagentic/components/planning/reviews.py +554 -0
- audiagentic/components/planning/workflows.yaml +43 -0
- audiagentic/components/project/__init__.py +1 -0
- audiagentic/components/project/project_api.py +202 -0
- audiagentic/components/project/project_components.py +167 -0
- audiagentic/components/project/project_files.py +71 -0
- audiagentic/components/project/project_mcp.py +149 -0
- audiagentic/components/project/project_surfaces.py +178 -0
- audiagentic/components/providers/__init__.py +13 -0
- audiagentic/components/providers/adapters/README.md +21 -0
- audiagentic/components/providers/adapters/__init__.py +124 -0
- audiagentic/components/providers/adapters/_stubs.py +55 -0
- audiagentic/components/providers/adapters/activity_rig/__init__.py +1 -0
- audiagentic/components/providers/adapters/activity_rig/adapter.py +20 -0
- audiagentic/components/providers/adapters/activity_rig.py +20 -0
- audiagentic/components/providers/adapters/aider/README.md +5 -0
- audiagentic/components/providers/adapters/aider/__init__.py +1 -0
- audiagentic/components/providers/adapters/aider/surface.py +35 -0
- audiagentic/components/providers/adapters/antigravity/README.md +3 -0
- audiagentic/components/providers/adapters/antigravity/__init__.py +1 -0
- audiagentic/components/providers/adapters/antigravity/config.py +18 -0
- audiagentic/components/providers/adapters/antigravity/instruction.md +11 -0
- audiagentic/components/providers/adapters/base_runner.py +520 -0
- audiagentic/components/providers/adapters/claude/README.md +5 -0
- audiagentic/components/providers/adapters/claude/__init__.py +2 -0
- audiagentic/components/providers/adapters/claude/adapter.py +255 -0
- audiagentic/components/providers/adapters/claude/catalog.py +38 -0
- audiagentic/components/providers/adapters/claude/config.py +17 -0
- audiagentic/components/providers/adapters/claude/hooks.py +186 -0
- audiagentic/components/providers/adapters/claude/instruction.md +11 -0
- audiagentic/components/providers/adapters/claude/restrictions.py +37 -0
- audiagentic/components/providers/adapters/claude/restrictions_loader.py +74 -0
- audiagentic/components/providers/adapters/claude/surface.py +66 -0
- audiagentic/components/providers/adapters/cli.py +25 -0
- audiagentic/components/providers/adapters/cline/README.md +5 -0
- audiagentic/components/providers/adapters/cline/__init__.py +2 -0
- audiagentic/components/providers/adapters/cline/adapter.py +194 -0
- audiagentic/components/providers/adapters/cline/surface.py +61 -0
- audiagentic/components/providers/adapters/codex/README.md +14 -0
- audiagentic/components/providers/adapters/codex/__init__.py +2 -0
- audiagentic/components/providers/adapters/codex/acp.py +99 -0
- audiagentic/components/providers/adapters/codex/acp_install.py +91 -0
- audiagentic/components/providers/adapters/codex/adapter.py +252 -0
- audiagentic/components/providers/adapters/codex/hooks_format.py +251 -0
- audiagentic/components/providers/adapters/codex/instruction.md +11 -0
- audiagentic/components/providers/adapters/codex/language_servers.py +142 -0
- audiagentic/components/providers/adapters/codex/mcp_format.py +161 -0
- audiagentic/components/providers/adapters/codex/model_selection.py +42 -0
- audiagentic/components/providers/adapters/codex/surface.py +50 -0
- audiagentic/components/providers/adapters/continue_/README.md +5 -0
- audiagentic/components/providers/adapters/continue_/__init__.py +1 -0
- audiagentic/components/providers/adapters/continue_/adapter.py +7 -0
- audiagentic/components/providers/adapters/continue_/hooks.py +26 -0
- audiagentic/components/providers/adapters/continue_/mcp_format.py +107 -0
- audiagentic/components/providers/adapters/copilot/README.md +5 -0
- audiagentic/components/providers/adapters/copilot/__init__.py +0 -0
- audiagentic/components/providers/adapters/copilot/hooks.py +48 -0
- audiagentic/components/providers/adapters/copilot/instruction.md +11 -0
- audiagentic/components/providers/adapters/gemini/README.md +5 -0
- audiagentic/components/providers/adapters/gemini/__init__.py +2 -0
- audiagentic/components/providers/adapters/gemini/adapter.py +142 -0
- audiagentic/components/providers/adapters/gemini/instruction.md +11 -0
- audiagentic/components/providers/adapters/goose/README.md +5 -0
- audiagentic/components/providers/adapters/goose/__init__.py +1 -0
- audiagentic/components/providers/adapters/goose/mcp_format.py +148 -0
- audiagentic/components/providers/adapters/gpt_auto/README.md +63 -0
- audiagentic/components/providers/adapters/gpt_auto/__init__.py +6 -0
- audiagentic/components/providers/adapters/gpt_auto/browser_process.py +124 -0
- audiagentic/components/providers/adapters/gpt_auto/cdp/__init__.py +14 -0
- audiagentic/components/providers/adapters/gpt_auto/cdp/bridge.py +518 -0
- audiagentic/components/providers/adapters/gpt_auto/cdp/cdp_browser.py +169 -0
- audiagentic/components/providers/adapters/gpt_auto/cdp/client.py +339 -0
- audiagentic/components/providers/adapters/gpt_auto/chat.py +2033 -0
- audiagentic/components/providers/adapters/gpt_auto/config.py +804 -0
- audiagentic/components/providers/adapters/gpt_auto/conversation_focus.py +176 -0
- audiagentic/components/providers/adapters/gpt_auto/gpt_auto_cdp.py +760 -0
- audiagentic/components/providers/adapters/gpt_auto/observation_engine.py +233 -0
- audiagentic/components/providers/adapters/gpt_auto/prompt_fingerprint.py +132 -0
- audiagentic/components/providers/adapters/gpt_auto/runtime.py +608 -0
- audiagentic/components/providers/adapters/gpt_auto/runtime_registry.py +72 -0
- audiagentic/components/providers/adapters/gpt_auto/session_transport.py +259 -0
- audiagentic/components/providers/adapters/gpt_auto/snapshot.py +351 -0
- audiagentic/components/providers/adapters/gpt_auto/turn.py +2341 -0
- audiagentic/components/providers/adapters/gpt_auto/urls.py +89 -0
- audiagentic/components/providers/adapters/gpt_auto/window_anchor.py +63 -0
- audiagentic/components/providers/adapters/gpt_auto_t1/__init__.py +14 -0
- audiagentic/components/providers/adapters/gpt_auto_t1/session_transport.py +11 -0
- audiagentic/components/providers/adapters/gpt_auto_t2/__init__.py +14 -0
- audiagentic/components/providers/adapters/gpt_auto_t2/session_transport.py +11 -0
- audiagentic/components/providers/adapters/local_openai/README.md +5 -0
- audiagentic/components/providers/adapters/local_openai/__init__.py +2 -0
- audiagentic/components/providers/adapters/local_openai/adapter.py +376 -0
- audiagentic/components/providers/adapters/local_openai/catalog.py +128 -0
- audiagentic/components/providers/adapters/local_openai/surface.py +53 -0
- audiagentic/components/providers/adapters/mcp_json.py +10 -0
- audiagentic/components/providers/adapters/opencode/README.md +21 -0
- audiagentic/components/providers/adapters/opencode/__init__.py +2 -0
- audiagentic/components/providers/adapters/opencode/acp.py +91 -0
- audiagentic/components/providers/adapters/opencode/adapter.py +197 -0
- audiagentic/components/providers/adapters/opencode/catalog.py +61 -0
- audiagentic/components/providers/adapters/opencode/execution_environment.py +71 -0
- audiagentic/components/providers/adapters/opencode/install.py +78 -0
- audiagentic/components/providers/adapters/opencode/language_servers.py +112 -0
- audiagentic/components/providers/adapters/opencode/mcp_format.py +85 -0
- audiagentic/components/providers/adapters/opencode/mcp_surface.py +85 -0
- audiagentic/components/providers/adapters/opencode/model_config.py +126 -0
- audiagentic/components/providers/adapters/opencode/model_entry.py +38 -0
- audiagentic/components/providers/adapters/opencode/plugin_array.py +77 -0
- audiagentic/components/providers/adapters/opencode/surface.py +34 -0
- audiagentic/components/providers/adapters/opencode/templates/AGENTS.md +13 -0
- audiagentic/components/providers/adapters/openhands/README.md +14 -0
- audiagentic/components/providers/adapters/openhands/__init__.py +0 -0
- audiagentic/components/providers/adapters/openhands/hooks.py +7 -0
- audiagentic/components/providers/adapters/openhands/toml_format.py +104 -0
- audiagentic/components/providers/adapters/pi/README.md +16 -0
- audiagentic/components/providers/adapters/pi/__init__.py +5 -0
- audiagentic/components/providers/adapters/pi/acp.py +246 -0
- audiagentic/components/providers/adapters/pi/adapter.py +37 -0
- audiagentic/components/providers/adapters/pi/hooks.py +152 -0
- audiagentic/components/providers/adapters/pi/install.py +168 -0
- audiagentic/components/providers/adapters/pi/interactive.py +121 -0
- audiagentic/components/providers/adapters/pi/mcp_exclusive_patch.py +219 -0
- audiagentic/components/providers/adapters/pi/mcp_surface.py +122 -0
- audiagentic/components/providers/adapters/pi/model_config.py +97 -0
- audiagentic/components/providers/adapters/pi/model_entry.py +39 -0
- audiagentic/components/providers/adapters/pi/print_activity.py +92 -0
- audiagentic/components/providers/adapters/pi/rpc_tap.py +130 -0
- audiagentic/components/providers/adapters/pi/rpc_tap_evidence.py +159 -0
- audiagentic/components/providers/adapters/pi/rpc_tap_receiver.py +81 -0
- audiagentic/components/providers/adapters/pi/rpc_tap_shim.py +256 -0
- audiagentic/components/providers/adapters/pi/rpc_tap_transport.py +72 -0
- audiagentic/components/providers/adapters/pi/surface.py +36 -0
- audiagentic/components/providers/adapters/pi/system.py +84 -0
- audiagentic/components/providers/adapters/pi/templates/agent/APPEND_SYSTEM.md +9 -0
- audiagentic/components/providers/adapters/pi/templates/agent/SYSTEM.md +38 -0
- audiagentic/components/providers/adapters/plandex/README.md +5 -0
- audiagentic/components/providers/adapters/plandex/__init__.py +0 -0
- audiagentic/components/providers/adapters/probe.py +74 -0
- audiagentic/components/providers/adapters/qwen/README.md +14 -0
- audiagentic/components/providers/adapters/qwen/__init__.py +1 -0
- audiagentic/components/providers/adapters/qwen/config.py +17 -0
- audiagentic/components/providers/adapters/qwen/hooks.py +48 -0
- audiagentic/components/providers/adapters/qwen/language_servers.py +70 -0
- audiagentic/components/providers/adapters/recipe_launch.py +147 -0
- audiagentic/components/providers/adapters/roo/README.md +5 -0
- audiagentic/components/providers/adapters/roo/__init__.py +1 -0
- audiagentic/components/providers/adapters/roo/hooks.py +36 -0
- audiagentic/components/providers/adapters/roo/surface.py +37 -0
- audiagentic/components/providers/contracts/__init__.py +43 -0
- audiagentic/components/providers/contracts/automation_vocabulary.py +25 -0
- audiagentic/components/providers/contracts/cli_lifecycle.py +78 -0
- audiagentic/components/providers/contracts/conversation_focus.py +58 -0
- audiagentic/components/providers/contracts/generated_surface.py +83 -0
- audiagentic/components/providers/contracts/harness_status_observer.py +175 -0
- audiagentic/components/providers/contracts/language_server_projection.py +91 -0
- audiagentic/components/providers/contracts/lifecycle_modes.py +52 -0
- audiagentic/components/providers/contracts/managed_hooks.py +102 -0
- audiagentic/components/providers/contracts/managed_mcp.py +109 -0
- audiagentic/components/providers/contracts/managed_reconcile_schema.py +147 -0
- audiagentic/components/providers/contracts/mcp_launch_surface.py +101 -0
- audiagentic/components/providers/contracts/model-source-catalog.schema.json +45 -0
- audiagentic/components/providers/contracts/model-sources.schema.json +134 -0
- audiagentic/components/providers/contracts/model_projection.py +129 -0
- audiagentic/components/providers/contracts/plugin_entry.py +76 -0
- audiagentic/components/providers/contracts/provider-cli-lifecycle-payload.schema.json +10 -0
- audiagentic/components/providers/contracts/provider-cli-lifecycle-result.schema.json +20 -0
- audiagentic/components/providers/contracts/provider-completion.schema.json +153 -0
- audiagentic/components/providers/contracts/provider-config.schema.json +252 -0
- audiagentic/components/providers/contracts/provider-descriptor.schema.json +102 -0
- audiagentic/components/providers/contracts/provider-generated-surface-payload.schema.json +17 -0
- audiagentic/components/providers/contracts/provider-generated-surface-result.schema.json +20 -0
- audiagentic/components/providers/contracts/provider-health.schema.json +45 -0
- audiagentic/components/providers/contracts/provider-language-server-projection-payload.schema.json +30 -0
- audiagentic/components/providers/contracts/provider-language-server-projection-result.schema.json +16 -0
- audiagentic/components/providers/contracts/provider-lsp-mcp-projection-payload.schema.json +1 -0
- audiagentic/components/providers/contracts/provider-lsp-mcp-projection-result.schema.json +1 -0
- audiagentic/components/providers/contracts/provider-managed-hooks-payload.schema.json +45 -0
- audiagentic/components/providers/contracts/provider-managed-hooks-result.schema.json +60 -0
- audiagentic/components/providers/contracts/provider-managed-mcp-payload.schema.json +91 -0
- audiagentic/components/providers/contracts/provider-managed-mcp-result.schema.json +64 -0
- audiagentic/components/providers/contracts/provider-model-catalog.schema.json +71 -0
- audiagentic/components/providers/contracts/provider-model-projection-payload.schema.json +33 -0
- audiagentic/components/providers/contracts/provider-model-projection-result.schema.json +35 -0
- audiagentic/components/providers/contracts/provider-plugin-entry-payload.schema.json +16 -0
- audiagentic/components/providers/contracts/provider-plugin-entry-result.schema.json +17 -0
- audiagentic/components/providers/contracts/provider-recipe.schema.json +62 -0
- audiagentic/components/providers/contracts/provider-self-provided-lsp-payload.schema.json +1 -0
- audiagentic/components/providers/contracts/provider-self-provided-lsp-result.schema.json +1 -0
- audiagentic/components/providers/contracts/provider-session-input.schema.json +71 -0
- audiagentic/components/providers/contracts/provider-session-manifest.schema.json +57 -0
- audiagentic/components/providers/contracts/provider-stream-event.schema.json +45 -0
- audiagentic/components/providers/contracts/provider-stream-manifest.schema.json +33 -0
- audiagentic/components/providers/contracts/provider-telemetry.schema.json +1 -0
- audiagentic/components/providers/contracts/provider_execution.py +200 -0
- audiagentic/components/providers/contracts/self_provided_lsp.py +59 -0
- audiagentic/components/providers/contracts/session_binding.py +73 -0
- audiagentic/components/providers/contracts/session_status.py +49 -0
- audiagentic/components/providers/contracts/session_surface.py +61 -0
- audiagentic/components/providers/descriptors/__init__.py +33 -0
- audiagentic/components/providers/descriptors/automation_capabilities.py +138 -0
- audiagentic/components/providers/descriptors/base.py +484 -0
- audiagentic/components/providers/descriptors/capability_catalogue.py +322 -0
- audiagentic/components/providers/descriptors/capability_facts.py +232 -0
- audiagentic/components/providers/descriptors/feature_mapping.py +82 -0
- audiagentic/components/providers/descriptors/loader.py +935 -0
- audiagentic/components/providers/descriptors/registry.py +170 -0
- audiagentic/components/providers/descriptors/session_surface_declarations.py +215 -0
- audiagentic/components/providers/descriptors/spec.py +208 -0
- audiagentic/components/providers/descriptors/taxonomy_doc_generator.py +144 -0
- audiagentic/components/providers/prompt_tags.py +47 -0
- audiagentic/components/providers/protocols/__init__.py +0 -0
- audiagentic/components/providers/protocols/streaming/__init__.py +51 -0
- audiagentic/components/providers/protocols/streaming/base_extractor.py +61 -0
- audiagentic/components/providers/protocols/streaming/completion.py +302 -0
- audiagentic/components/providers/protocols/streaming/provider_streaming.py +338 -0
- audiagentic/components/providers/protocols/streaming/sinks.py +263 -0
- audiagentic/components/providers/providers_api.py +2110 -0
- audiagentic/components/providers/providers_mcp.py +243 -0
- audiagentic/components/providers/services/__init__.py +1 -0
- audiagentic/components/providers/services/capabilities/__init__.py +1 -0
- audiagentic/components/providers/services/capabilities/automation_registry.py +136 -0
- audiagentic/components/providers/services/capabilities/cli_lifecycle_family.py +11 -0
- audiagentic/components/providers/services/capabilities/cli_lifecycle_handler.py +228 -0
- audiagentic/components/providers/services/capabilities/declarative_recipe_handler.py +198 -0
- audiagentic/components/providers/services/capabilities/generated_surface_family.py +110 -0
- audiagentic/components/providers/services/capabilities/language_server_family.py +98 -0
- audiagentic/components/providers/services/capabilities/managed_hooks_family.py +127 -0
- audiagentic/components/providers/services/capabilities/managed_mcp_family.py +171 -0
- audiagentic/components/providers/services/capabilities/model_projection_family.py +11 -0
- audiagentic/components/providers/services/capabilities/model_projection_handler.py +203 -0
- audiagentic/components/providers/services/capabilities/plugin_entries.py +98 -0
- audiagentic/components/providers/services/capabilities/recipe_definitions.py +288 -0
- audiagentic/components/providers/services/capabilities/recipe_steps.py +404 -0
- audiagentic/components/providers/services/capabilities/self_provided_lsp_family.py +11 -0
- audiagentic/components/providers/services/capabilities/self_provided_lsp_handler.py +100 -0
- audiagentic/components/providers/services/catalog/__init__.py +1 -0
- audiagentic/components/providers/services/catalog/catalog.py +121 -0
- audiagentic/components/providers/services/catalog/models.py +461 -0
- audiagentic/components/providers/services/catalog/overview.py +207 -0
- audiagentic/components/providers/services/catalog/source_catalog.py +461 -0
- audiagentic/components/providers/services/config/__init__.py +1 -0
- audiagentic/components/providers/services/config/feature_resolution.py +92 -0
- audiagentic/components/providers/services/config/model_source_config.py +189 -0
- audiagentic/components/providers/services/config/provider_catalog.py +107 -0
- audiagentic/components/providers/services/config/provider_config.py +333 -0
- audiagentic/components/providers/services/execution/__init__.py +1 -0
- audiagentic/components/providers/services/execution/execution.py +329 -0
- audiagentic/components/providers/services/execution/launch_env.py +128 -0
- audiagentic/components/providers/services/execution/prompt_syntax.py +80 -0
- audiagentic/components/providers/services/execution/public_execution.py +871 -0
- audiagentic/components/providers/services/execution/public_prompt_operations.py +167 -0
- audiagentic/components/providers/services/host/__init__.py +1 -0
- audiagentic/components/providers/services/host/host_adapter.py +128 -0
- audiagentic/components/providers/services/host/host_capabilities.py +83 -0
- audiagentic/components/providers/services/host/system_probe.py +36 -0
- audiagentic/components/providers/services/lifecycle/__init__.py +1 -0
- audiagentic/components/providers/services/lifecycle/health.py +41 -0
- audiagentic/components/providers/services/lifecycle/lifecycle.py +313 -0
- audiagentic/components/providers/services/lifecycle/project_purge.py +101 -0
- audiagentic/components/providers/services/lifecycle/public_materialize.py +120 -0
- audiagentic/components/providers/services/lifecycle/status.py +295 -0
- audiagentic/components/providers/services/mcp/__init__.py +1 -0
- audiagentic/components/providers/services/mcp/managed_mcp_registry.py +27 -0
- audiagentic/components/providers/services/mcp/mcp.py +357 -0
- audiagentic/components/providers/services/mcp/mcp_projection.py +75 -0
- audiagentic/components/providers/services/mcp/mcp_sync.py +48 -0
- audiagentic/components/providers/services/reconcile.py +426 -0
- audiagentic/components/providers/services/secrets.py +93 -0
- audiagentic/components/providers/services/session/__init__.py +1 -0
- audiagentic/components/providers/services/session/harness_observability_inventory.py +374 -0
- audiagentic/components/providers/services/session/harness_status_observer_resolution.py +111 -0
- audiagentic/components/providers/services/session/session_surface_resolution.py +617 -0
- audiagentic/components/providers/skill_surfaces.py +307 -0
- audiagentic/components/providers/surfaces/__init__.py +3 -0
- audiagentic/components/providers/surfaces/base.py +428 -0
- audiagentic/components/providers/surfaces/contributions.py +204 -0
- audiagentic/components/providers/surfaces/extensions_json.py +156 -0
- audiagentic/components/providers/surfaces/host_settings.py +45 -0
- audiagentic/components/providers/surfaces/manager.py +251 -0
- audiagentic/components/providers/surfaces/observer.py +66 -0
- audiagentic/components/providers/surfaces/registry.py +78 -0
- audiagentic/components/providers/surfaces/templates/default_instruction.md +11 -0
- audiagentic/components/providers/surfaces/templates/default_prompt_tags.md +9 -0
- audiagentic/components/providers/tags/__init__.py +5 -0
- audiagentic/components/providers/tags/base.py +63 -0
- audiagentic/components/providers/tags/loader.py +254 -0
- audiagentic/components/providers/tags/registry.py +59 -0
- audiagentic/components/providers/validate_ids.py +38 -0
- audiagentic/components/providers/workflow/__init__.py +11 -0
- audiagentic/components/providers/workflow/provider_cli.py +268 -0
- audiagentic/components/release/__init__.py +1 -0
- audiagentic/components/release/events.py +3 -0
- audiagentic/components/release/github_auth.py +298 -0
- audiagentic/components/release/local_release.py +363 -0
- audiagentic/components/release/release_api.py +241 -0
- audiagentic/components/release/release_mcp.py +33 -0
- audiagentic/components/release/release_please/__init__.py +1 -0
- audiagentic/components/release/release_please/finalize.py +69 -0
- audiagentic/components/release/release_please/install.py +126 -0
- audiagentic/components/release/release_please/manage.py +132 -0
- audiagentic/components/release/release_please/release_please_mcp.py +94 -0
- audiagentic/components/release/release_please/templates/baseline.yml +107 -0
- audiagentic/components/release/release_please/templates/release-please-config.json +16 -0
- audiagentic/components/release/release_please/templates/release.yml +107 -0
- audiagentic/components/release/release_please/utils.py +14 -0
- audiagentic/components/session/__init__.py +1 -0
- audiagentic/components/session/session_api.py +151 -0
- audiagentic/components/session/session_embedded_rig.py +160 -0
- audiagentic/components/session/session_mcp.py +84 -0
- audiagentic/components/session/session_runtime_status.py +122 -0
- audiagentic/components/source_control/__init__.py +1 -0
- audiagentic/components/source_control/git_commits.py +83 -0
- audiagentic/components/source_control/source_control_api.py +132 -0
- audiagentic/components/source_control/source_control_bootstrap.py +482 -0
- audiagentic/components/source_control/source_control_mcp.py +38 -0
- audiagentic/config/components/README.md +14 -0
- audiagentic/config/components/agent-jobs/error-resolutions.yaml +63 -0
- audiagentic/config/components/agent-jobs.yaml +31 -0
- audiagentic/config/components/agent-ledger/error-resolutions.yaml +1 -0
- audiagentic/config/components/agent-ledger/skills/ag-ledger/skill.md +18 -0
- audiagentic/config/components/agent-ledger.yaml +72 -0
- audiagentic/config/components/agents/error-resolutions.yaml +231 -0
- audiagentic/config/components/agents/events.yaml +204 -0
- audiagentic/config/components/agents/implementations/automatic.yaml +25 -0
- audiagentic/config/components/agents/implementations/embedded.yaml +20 -0
- audiagentic/config/components/agents/implementations/standalone.yaml +19 -0
- audiagentic/config/components/agents.yaml +436 -0
- audiagentic/config/components/coding-lsp/bindings/ag-lsp/cpp.yaml +8 -0
- audiagentic/config/components/coding-lsp/bindings/ag-lsp/json.yaml +8 -0
- audiagentic/config/components/coding-lsp/bindings/ag-lsp/make.yaml +8 -0
- audiagentic/config/components/coding-lsp/bindings/ag-lsp/markdown.yaml +8 -0
- audiagentic/config/components/coding-lsp/bindings/ag-lsp/python-ruff.yaml +8 -0
- audiagentic/config/components/coding-lsp/bindings/ag-lsp/python.yaml +8 -0
- audiagentic/config/components/coding-lsp/bindings/ag-lsp/rust.yaml +8 -0
- audiagentic/config/components/coding-lsp/bindings/ag-lsp/toml.yaml +8 -0
- audiagentic/config/components/coding-lsp/bindings/ag-lsp/typescript.yaml +8 -0
- audiagentic/config/components/coding-lsp/bindings/ag-lsp/yaml.yaml +8 -0
- audiagentic/config/components/coding-lsp/bindings/blackwell-agent-lsp/cpp.yaml +8 -0
- audiagentic/config/components/coding-lsp/bindings/blackwell-agent-lsp/json.yaml +8 -0
- audiagentic/config/components/coding-lsp/bindings/blackwell-agent-lsp/make.yaml +8 -0
- audiagentic/config/components/coding-lsp/bindings/blackwell-agent-lsp/markdown.yaml +8 -0
- audiagentic/config/components/coding-lsp/bindings/blackwell-agent-lsp/python.yaml +8 -0
- audiagentic/config/components/coding-lsp/bindings/blackwell-agent-lsp/rust.yaml +8 -0
- audiagentic/config/components/coding-lsp/bindings/blackwell-agent-lsp/toml.yaml +8 -0
- audiagentic/config/components/coding-lsp/bindings/blackwell-agent-lsp/typescript.yaml +8 -0
- audiagentic/config/components/coding-lsp/bindings/blackwell-agent-lsp/yaml.yaml +8 -0
- audiagentic/config/components/coding-lsp/features/cpp.yaml +33 -0
- audiagentic/config/components/coding-lsp/features/json.yaml +22 -0
- audiagentic/config/components/coding-lsp/features/make.yaml +22 -0
- audiagentic/config/components/coding-lsp/features/markdown.yaml +28 -0
- audiagentic/config/components/coding-lsp/features/python-ruff.yaml +31 -0
- audiagentic/config/components/coding-lsp/features/python.yaml +28 -0
- audiagentic/config/components/coding-lsp/features/rust.yaml +23 -0
- audiagentic/config/components/coding-lsp/features/toml.yaml +29 -0
- audiagentic/config/components/coding-lsp/features/typescript.yaml +26 -0
- audiagentic/config/components/coding-lsp/features/yaml-language.yaml +22 -0
- audiagentic/config/components/coding-lsp/implementations/ag-lsp.yaml +18 -0
- audiagentic/config/components/coding-lsp/implementations/blackwell-agent-lsp.yaml +24 -0
- audiagentic/config/components/coding-lsp.yaml +296 -0
- audiagentic/config/components/foundation/error-resolutions.yaml +192 -0
- audiagentic/config/components/foundation/events.yaml +65 -0
- audiagentic/config/components/harness/error-resolutions.yaml +11 -0
- audiagentic/config/components/ledger/events.yaml +8 -0
- audiagentic/config/components/locales/planning/de.yaml +6 -0
- audiagentic/config/components/locales/planning/en.yaml +16 -0
- audiagentic/config/components/memory/error-resolutions.yaml +7 -0
- audiagentic/config/components/memory/hindsight-plugin-definition.schema.json +62 -0
- audiagentic/config/components/memory/hindsight.yaml +52 -0
- audiagentic/config/components/memory/recipes/hindsight-aider.yaml +57 -0
- audiagentic/config/components/memory/recipes/hindsight-codex.yaml +104 -0
- audiagentic/config/components/memory/recipes/hindsight-copilot.yaml +53 -0
- audiagentic/config/components/memory/recipes/hindsight-managed-mcp-stdio.yaml +45 -0
- audiagentic/config/components/memory/recipes/hindsight-managed-mcp.yaml +44 -0
- audiagentic/config/components/memory/recipes/hindsight-openhands.yaml +53 -0
- audiagentic/config/components/memory/recipes/hindsight-pi.yaml +87 -0
- audiagentic/config/components/memory/recipes/hindsight-plugin.yaml +41 -0
- audiagentic/config/components/memory/recipes/hindsight-roo.yaml +53 -0
- audiagentic/config/components/memory.yaml +67 -0
- audiagentic/config/components/planning/error-resolutions.yaml +37 -0
- audiagentic/config/components/planning/events.yaml +67 -0
- audiagentic/config/components/planning/planning-local-docs.yaml +40 -0
- audiagentic/config/components/planning.yaml +183 -0
- audiagentic/config/components/project/config/project.yaml +7 -0
- audiagentic/config/components/project/error-resolutions.yaml +6 -0
- audiagentic/config/components/project.yaml +53 -0
- audiagentic/config/components/providers/claude-restrictions.yaml +20 -0
- audiagentic/config/components/providers/error-resolutions.yaml +202 -0
- audiagentic/config/components/providers/hosts.yaml +11 -0
- audiagentic/config/components/providers.yaml +85 -0
- audiagentic/config/components/release/.github/workflows/release.yml +107 -0
- audiagentic/config/components/release/error-resolutions.yaml +23 -0
- audiagentic/config/components/release/events.yaml +8 -0
- audiagentic/config/components/release.yaml +59 -0
- audiagentic/config/components/rig/error-resolutions.yaml +5 -0
- audiagentic/config/components/rig/llama-cpp-release.yaml +20 -0
- audiagentic/config/components/session/error-resolutions.yaml +5 -0
- audiagentic/config/components/session.yaml +25 -0
- audiagentic/config/components/source-control/skills/ag-check-in-prep/skill.md +25 -0
- audiagentic/config/components/source-control.yaml +121 -0
- audiagentic/config/providers/_capabilities.yaml +221 -0
- audiagentic/config/providers/activity_rig.yaml +5 -0
- audiagentic/config/providers/aider.yaml +59 -0
- audiagentic/config/providers/antigravity.yaml +96 -0
- audiagentic/config/providers/claude.yaml +82 -0
- audiagentic/config/providers/cline.yaml +94 -0
- audiagentic/config/providers/codex.yaml +199 -0
- audiagentic/config/providers/continue.yaml +73 -0
- audiagentic/config/providers/copilot.yaml +94 -0
- audiagentic/config/providers/crush.yaml +31 -0
- audiagentic/config/providers/gemini.yaml +86 -0
- audiagentic/config/providers/goose.yaml +83 -0
- audiagentic/config/providers/gpt_auto.yaml +107 -0
- audiagentic/config/providers/gpt_auto_t1.yaml +100 -0
- audiagentic/config/providers/gpt_auto_t2.yaml +100 -0
- audiagentic/config/providers/kilo.yaml +32 -0
- audiagentic/config/providers/local_openai.yaml +37 -0
- audiagentic/config/providers/opencode.yaml +318 -0
- audiagentic/config/providers/openhands.yaml +87 -0
- audiagentic/config/providers/pi.yaml +249 -0
- audiagentic/config/providers/plandex.yaml +58 -0
- audiagentic/config/providers/qwen.yaml +114 -0
- audiagentic/config/providers/roo.yaml +70 -0
- audiagentic/config/providers/zed.yaml +37 -0
- audiagentic/config/provisioning/foundation/composition.yaml +20 -0
- audiagentic/config/provisioning/foundation/gateway-service-composition.yaml +27 -0
- audiagentic/config/provisioning/foundation/logging.yaml +50 -0
- audiagentic/config/provisioning/harness/ag.yaml +44 -0
- audiagentic/config/provisioning/harness/opencode.yaml +17 -0
- audiagentic/config/provisioning/harness/pi.yaml +62 -0
- audiagentic/config/provisioning/rig/rig.yaml +75 -0
- audiagentic/config/recipes/codex-acp-bridge.yaml +42 -0
- audiagentic/foundation/__init__.py +16 -0
- audiagentic/foundation/capabilities/__init__.py +45 -0
- audiagentic/foundation/cli_io.py +44 -0
- audiagentic/foundation/components/__init__.py +49 -0
- audiagentic/foundation/components/base.py +116 -0
- audiagentic/foundation/components/context.py +62 -0
- audiagentic/foundation/components/dependencies.py +361 -0
- audiagentic/foundation/components/hooks.py +197 -0
- audiagentic/foundation/components/ids.py +19 -0
- audiagentic/foundation/components/loader.py +429 -0
- audiagentic/foundation/components/registry.py +167 -0
- audiagentic/foundation/composition/__init__.py +33 -0
- audiagentic/foundation/composition/builder.py +168 -0
- audiagentic/foundation/composition/config.py +183 -0
- audiagentic/foundation/composition/contracts.py +61 -0
- audiagentic/foundation/composition/graph.py +70 -0
- audiagentic/foundation/config/__init__.py +4 -0
- audiagentic/foundation/config/harness.py +49 -0
- audiagentic/foundation/config/layers.py +39 -0
- audiagentic/foundation/config/merge.py +16 -0
- audiagentic/foundation/config/refs.py +71 -0
- audiagentic/foundation/contracts/__init__.py +0 -0
- audiagentic/foundation/contracts/canonical_ids.py +75 -0
- audiagentic/foundation/contracts/error_resolutions.py +76 -0
- audiagentic/foundation/contracts/errors.py +222 -0
- audiagentic/foundation/contracts/output.py +58 -0
- audiagentic/foundation/contracts/schema_registry.py +37 -0
- audiagentic/foundation/contracts/schemas/agent-execution-record.schema.json +468 -0
- audiagentic/foundation/contracts/schemas/agent-execution-session.schema.json +151 -0
- audiagentic/foundation/contracts/schemas/agent-output-event.schema.json +52 -0
- audiagentic/foundation/contracts/schemas/agent-status-snapshot.schema.json +38 -0
- audiagentic/foundation/contracts/schemas/agents-config.schema.json +23 -0
- audiagentic/foundation/contracts/schemas/approval-request.schema.json +58 -0
- audiagentic/foundation/contracts/schemas/change-event.schema.json +65 -0
- audiagentic/foundation/contracts/schemas/component-config.schema.json +69 -0
- audiagentic/foundation/contracts/schemas/error-envelope.schema.json +23 -0
- audiagentic/foundation/contracts/schemas/event-envelope.schema.json +38 -0
- audiagentic/foundation/contracts/schemas/event-topics.schema.json +59 -0
- audiagentic/foundation/contracts/schemas/interaction-request.schema.json +52 -0
- audiagentic/foundation/contracts/schemas/job-record.schema.json +212 -0
- audiagentic/foundation/contracts/schemas/lifecycle-plan.schema.json +41 -0
- audiagentic/foundation/contracts/schemas/lifecycle-result.schema.json +44 -0
- audiagentic/foundation/contracts/schemas/project-config.schema.json +182 -0
- audiagentic/foundation/contracts/schemas/prompt-launch-request.schema.json +334 -0
- audiagentic/foundation/contracts/schemas/prompt-syntax.schema.json +73 -0
- audiagentic/foundation/contracts/schemas/provider-completion.schema.json +153 -0
- audiagentic/foundation/contracts/schemas/provider-config.schema.json +252 -0
- audiagentic/foundation/contracts/schemas/provider-descriptor.schema.json +102 -0
- audiagentic/foundation/contracts/schemas/provider-health.schema.json +45 -0
- audiagentic/foundation/contracts/schemas/provider-model-catalog.schema.json +71 -0
- audiagentic/foundation/contracts/schemas/provider-session-input.schema.json +71 -0
- audiagentic/foundation/contracts/schemas/provider-session-manifest.schema.json +57 -0
- audiagentic/foundation/contracts/schemas/provider-stream-event.schema.json +45 -0
- audiagentic/foundation/contracts/schemas/provider-stream-manifest.schema.json +33 -0
- audiagentic/foundation/contracts/schemas/resolved-execution-profile.schema.json +43 -0
- audiagentic/foundation/contracts/schemas/review-bundle.schema.json +117 -0
- audiagentic/foundation/contracts/schemas/review-report.schema.json +153 -0
- audiagentic/foundation/contracts/schemas/stage-result.schema.json +33 -0
- audiagentic/foundation/contracts/schemas/status-evidence.schema.json +49 -0
- audiagentic/foundation/contracts/schemas/task-status-v4.schema.json +75 -0
- audiagentic/foundation/contracts/schemas/validation-report.schema.json +34 -0
- audiagentic/foundation/contracts/validate_ids.py +134 -0
- audiagentic/foundation/contracts/validate_schemas.py +113 -0
- audiagentic/foundation/event/__init__.py +73 -0
- audiagentic/foundation/event/durable_spool.py +216 -0
- audiagentic/foundation/event/envelope.py +85 -0
- audiagentic/foundation/event/event_bus.py +460 -0
- audiagentic/foundation/event/event_config.py +107 -0
- audiagentic/foundation/event/event_exceptions.py +95 -0
- audiagentic/foundation/event/event_log.py +84 -0
- audiagentic/foundation/event/event_store.py +166 -0
- audiagentic/foundation/event/lifecycle_observer.py +94 -0
- audiagentic/foundation/event/patterns.py +38 -0
- audiagentic/foundation/event/topic_registry.py +272 -0
- audiagentic/foundation/features/__init__.py +43 -0
- audiagentic/foundation/features/base.py +132 -0
- audiagentic/foundation/features/config_status.py +158 -0
- audiagentic/foundation/features/lifecycle.py +202 -0
- audiagentic/foundation/features/loader.py +219 -0
- audiagentic/foundation/features/options.py +173 -0
- audiagentic/foundation/features/registry.py +238 -0
- audiagentic/foundation/features/resolver.py +74 -0
- audiagentic/foundation/features/state.py +398 -0
- audiagentic/foundation/i18n.py +354 -0
- audiagentic/foundation/interaction/__init__.py +57 -0
- audiagentic/foundation/interaction/api.py +230 -0
- audiagentic/foundation/interaction/backend.py +133 -0
- audiagentic/foundation/interaction/mcp.py +147 -0
- audiagentic/foundation/interaction/models.py +44 -0
- audiagentic/foundation/interaction/store.py +69 -0
- audiagentic/foundation/io.py +231 -0
- audiagentic/foundation/lifecycle/__init__.py +2 -0
- audiagentic/foundation/lifecycle/baseline_sync.py +274 -0
- audiagentic/foundation/lifecycle/components.py +243 -0
- audiagentic/foundation/lifecycle/detector.py +54 -0
- audiagentic/foundation/lifecycle/fresh_install.py +60 -0
- audiagentic/foundation/lifecycle/observers.py +49 -0
- audiagentic/foundation/lifecycle/uninstall.py +58 -0
- audiagentic/foundation/logging/__init__.py +64 -0
- audiagentic/foundation/logging/audit.py +195 -0
- audiagentic/foundation/logging/config.py +356 -0
- audiagentic/foundation/logging/context.py +47 -0
- audiagentic/foundation/logging/formatters.py +130 -0
- audiagentic/foundation/logging/redaction.py +240 -0
- audiagentic/foundation/mcp/__init__.py +28 -0
- audiagentic/foundation/mcp/component_builder.py +45 -0
- audiagentic/foundation/mcp/component_server.py +423 -0
- audiagentic/foundation/mcp/json_format.py +113 -0
- audiagentic/foundation/mcp/launch.py +47 -0
- audiagentic/foundation/mcp/projection.py +94 -0
- audiagentic/foundation/observability/__init__.py +4 -0
- audiagentic/foundation/observability/operational_records.py +71 -0
- audiagentic/foundation/observability/timeline.py +81 -0
- audiagentic/foundation/paths/__init__.py +35 -0
- audiagentic/foundation/paths/component_paths.py +104 -0
- audiagentic/foundation/paths/home.py +41 -0
- audiagentic/foundation/paths/names.py +180 -0
- audiagentic/foundation/paths/package.py +55 -0
- audiagentic/foundation/paths/project.py +34 -0
- audiagentic/foundation/paths/resolution.py +148 -0
- audiagentic/foundation/paths/safety.py +129 -0
- audiagentic/foundation/registry_utils.py +202 -0
- audiagentic/foundation/steps/__init__.py +60 -0
- audiagentic/foundation/steps/callable.py +34 -0
- audiagentic/foundation/steps/control.py +153 -0
- audiagentic/foundation/steps/factory.py +750 -0
- audiagentic/foundation/steps/protocol.py +26 -0
- audiagentic/foundation/steps/results.py +31 -0
- audiagentic/foundation/steps/sequence.py +140 -0
- audiagentic/foundation/steps/shell.py +150 -0
- audiagentic/foundation/steps/structured.py +449 -0
- audiagentic/foundation/system/__init__.py +0 -0
- audiagentic/foundation/system/adopted_process.py +376 -0
- audiagentic/foundation/system/browser_manager.py +494 -0
- audiagentic/foundation/system/managed_process.py +371 -0
- audiagentic/foundation/system/managed_service.py +390 -0
- audiagentic/foundation/system/managed_service_contracts.py +274 -0
- audiagentic/foundation/system/managed_service_lifecycle.py +72 -0
- audiagentic/foundation/system/managed_service_lifecycle_contracts.py +88 -0
- audiagentic/foundation/system/managed_service_owner.py +121 -0
- audiagentic/foundation/system/managed_service_shutdown.py +157 -0
- audiagentic/foundation/system/managed_service_start.py +306 -0
- audiagentic/foundation/system/probe.py +39 -0
- audiagentic/foundation/system/process.py +356 -0
- audiagentic/foundation/system/supervised_process.py +331 -0
- audiagentic/foundation/templates.py +128 -0
- audiagentic/foundation/time.py +30 -0
- audiagentic/foundation/toolchains/__init__.py +91 -0
- audiagentic/foundation/toolchains/config/__init__.py +40 -0
- audiagentic/foundation/toolchains/config/artifact_registry.py +242 -0
- audiagentic/foundation/toolchains/config/config_patcher.py +158 -0
- audiagentic/foundation/toolchains/config/config_reader.py +133 -0
- audiagentic/foundation/toolchains/config/fragments.py +162 -0
- audiagentic/foundation/toolchains/config/managed_block.py +143 -0
- audiagentic/foundation/toolchains/config/managed_config.py +298 -0
- audiagentic/foundation/toolchains/detect.py +77 -0
- audiagentic/foundation/toolchains/loader.py +48 -0
- audiagentic/foundation/toolchains/probes.py +300 -0
- audiagentic/foundation/toolchains/recipe_catalogue.py +300 -0
- audiagentic/foundation/toolchains/recipe_contract.py +338 -0
- audiagentic/foundation/toolchains/recipe_execution.py +221 -0
- audiagentic/foundation/toolchains/recipe_loader.py +321 -0
- audiagentic/foundation/toolchains/recipe_materializer.py +358 -0
- audiagentic/foundation/toolchains/recipe_patterns.py +339 -0
- audiagentic/foundation/toolchains/recipes/__init__.py +62 -0
- audiagentic/foundation/toolchains/toolchains.yaml +75 -0
- audiagentic/foundation/transports/__init__.py +142 -0
- audiagentic/foundation/transports/acp.py +1896 -0
- audiagentic/foundation/transports/agent_output.py +217 -0
- audiagentic/foundation/transports/agent_session.py +662 -0
- audiagentic/foundation/transports/agent_status.py +193 -0
- audiagentic/foundation/transports/harness_status_observer.py +216 -0
- audiagentic/foundation/transports/session_binding.py +187 -0
- audiagentic/foundation/transports/session_surface.py +374 -0
- audiagentic/foundation/workflow/__init__.py +46 -0
- audiagentic/foundation/workflow/actions.py +141 -0
- audiagentic/foundation/workflow/evidence_policy.py +120 -0
- audiagentic/foundation/workflow/frontmatter.py +311 -0
- audiagentic/foundation/workflow/id_gen.py +110 -0
- audiagentic/foundation/workflow/interfaces.py +136 -0
- audiagentic/foundation/workflow/invocation/__init__.py +34 -0
- audiagentic/foundation/workflow/invocation/from_spec.py +159 -0
- audiagentic/foundation/workflow/invocation/models.py +28 -0
- audiagentic/foundation/workflow/invocation/runner.py +69 -0
- audiagentic/foundation/workflow/propagation/__init__.py +6 -0
- audiagentic/foundation/workflow/propagation/engine.py +187 -0
- audiagentic/foundation/workflow/propagation/healing.py +230 -0
- audiagentic/foundation/workflow/propagation/healing_validator.py +23 -0
- audiagentic/foundation/workflow/propagation/log.py +59 -0
- audiagentic/foundation/workflow/propagation/log_recorder.py +51 -0
- audiagentic/foundation/workflow/propagation/parents.py +71 -0
- audiagentic/foundation/workflow/propagation/propagation_config.py +123 -0
- audiagentic/foundation/workflow/propagation/rule_evaluator.py +117 -0
- audiagentic/foundation/workflow/propagation/rules.py +184 -0
- audiagentic/foundation/workflow/propagation/workflow_item_api.py +13 -0
- audiagentic/foundation/workflow/state_machine.py +229 -0
- audiagentic/foundation/workflow/transition_engine.py +46 -0
- audiagentic/foundation/workflow/transitions.py +90 -0
- audiagentic/foundation/workflow/util.py +50 -0
- audiagentic/launcher.py +319 -0
- audiagentic/runtime/__init__.py +1 -0
- audiagentic/runtime/bootstrap/__init__.py +18 -0
- audiagentic/runtime/bootstrap/application_host.py +86 -0
- audiagentic/runtime/bootstrap/composition.py +81 -0
- audiagentic/runtime/bootstrap/gateway_service_composition.py +210 -0
- audiagentic/runtime/component_context.py +83 -0
- audiagentic/runtime/harness/__init__.py +443 -0
- audiagentic/runtime/harness/config.py +81 -0
- audiagentic/runtime/harness/context.py +52 -0
- audiagentic/runtime/harness/interface.py +156 -0
- audiagentic/runtime/harness/lifecycle.py +46 -0
- audiagentic/runtime/harness/paths.py +14 -0
- audiagentic/runtime/harness/provisioning.py +53 -0
- audiagentic/runtime/harness/reload.py +40 -0
- audiagentic/runtime/harness/resolution.py +76 -0
- audiagentic/runtime/harness/rig.py +63 -0
- audiagentic/runtime/harness/run_common.py +274 -0
- audiagentic/runtime/rig/__init__.py +1 -0
- audiagentic/runtime/rig/constants.py +80 -0
- audiagentic/runtime/rig/embedded/__init__.py +1 -0
- audiagentic/runtime/rig/embedded/binaries.py +231 -0
- audiagentic/runtime/rig/embedded/cli.py +142 -0
- audiagentic/runtime/rig/embedded/config.py +182 -0
- audiagentic/runtime/rig/embedded/launch.py +240 -0
- audiagentic/runtime/rig/embedded/process.py +83 -0
- audiagentic/runtime/rig/embedded/recipe.py +81 -0
- audiagentic/runtime/rig/embedded/release_manifest.py +79 -0
- audiagentic/runtime/rig/embedded/resolution.py +156 -0
- audiagentic/runtime/rig/errors.py +179 -0
- audiagentic/runtime/rig/external/config.yaml +19 -0
- audiagentic/runtime/rig/http.py +84 -0
- audiagentic/runtime/rig/models.py +98 -0
- audiagentic/runtime/rig/service.py +198 -0
- audiagentic/runtime/system/__init__.py +21 -0
- audiagentic/runtime/system/platform.py +378 -0
- audiagentic/runtime/update/__init__.py +5 -0
- audiagentic/runtime/update/checker.py +163 -0
- audiagentic/runtime/update/prompt.py +99 -0
- audiagentic/runtime/update/runner.py +76 -0
- audiagentic/utils/__init__.py +1 -0
- audiagentic/utils/calculator.py +6 -0
- audiagentic/utils.py +5 -0
- audiagentic-0.2.1.dist-info/METADATA +115 -0
- audiagentic-0.2.1.dist-info/RECORD +935 -0
- audiagentic-0.2.1.dist-info/WHEEL +5 -0
- audiagentic-0.2.1.dist-info/entry_points.txt +2 -0
- audiagentic-0.2.1.dist-info/top_level.txt +1 -0
audiagentic/__init__.py
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
"""AUDiaGentic: Agentic workflow orchestration and execution platform.
|
|
2
|
+
|
|
3
|
+
Top-level package for the AUDiaGentic system. Domain layout:
|
|
4
|
+
|
|
5
|
+
foundation/ — shared contracts, event bus, and the component framework (base layer)
|
|
6
|
+
components/ — core and optional components (project, session, providers, ledger, ...)
|
|
7
|
+
runtime/ — lifecycle management, harness, and durable state persistence
|
|
8
|
+
config/ — component descriptors and provisioning configuration
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
__version__ = "0.2.1"
|
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
"""Bootstrap and repair commands for AUDiaGentic-owned state."""
|
|
2
|
+
from __future__ import annotations
|
|
3
|
+
|
|
4
|
+
import argparse
|
|
5
|
+
import logging
|
|
6
|
+
from pathlib import Path
|
|
7
|
+
|
|
8
|
+
from audiagentic.foundation.cli_io import print_error, print_json, print_message
|
|
9
|
+
from audiagentic.foundation.paths.home import global_harness_runtime
|
|
10
|
+
from audiagentic.runtime.harness import (
|
|
11
|
+
cleanup_runtime,
|
|
12
|
+
install_to,
|
|
13
|
+
refresh_materialized_agent_config,
|
|
14
|
+
request_runtime_reload,
|
|
15
|
+
)
|
|
16
|
+
|
|
17
|
+
logger = logging.getLogger(__name__)
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def _install_core_components(project_root: Path) -> list[str]:
|
|
21
|
+
"""Materialize every mandatory project component; return failed ids.
|
|
22
|
+
|
|
23
|
+
These components own project scaffold (configuration, prompts and event-bus
|
|
24
|
+
state). They are deliberately independent of MCP collection.
|
|
25
|
+
"""
|
|
26
|
+
from audiagentic.foundation.components.loader import register_all_components
|
|
27
|
+
from audiagentic.foundation.components.registry import all_descriptors
|
|
28
|
+
from audiagentic.foundation.lifecycle.components import install_component
|
|
29
|
+
|
|
30
|
+
register_all_components()
|
|
31
|
+
failed: list[str] = []
|
|
32
|
+
for component_id, descriptor in all_descriptors().items():
|
|
33
|
+
if not descriptor.core:
|
|
34
|
+
continue
|
|
35
|
+
try:
|
|
36
|
+
result = install_component(component_id, project_root)
|
|
37
|
+
if not result.get("ok"):
|
|
38
|
+
failed.append(component_id)
|
|
39
|
+
except Exception:
|
|
40
|
+
logger.error("Failed to bootstrap core component %s", component_id, exc_info=True)
|
|
41
|
+
failed.append(component_id)
|
|
42
|
+
return failed
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
def _cmd_bootstrap(target: Path, project_root: Path) -> int:
|
|
46
|
+
print_message(f"Bootstrapping AUDiaGentic into {target}")
|
|
47
|
+
rc = install_to(target, project_root=project_root)
|
|
48
|
+
if rc:
|
|
49
|
+
return rc
|
|
50
|
+
|
|
51
|
+
failed = _install_core_components(project_root)
|
|
52
|
+
if failed:
|
|
53
|
+
print_error(f"Failed to bootstrap core components: {', '.join(sorted(failed))}")
|
|
54
|
+
return 1
|
|
55
|
+
|
|
56
|
+
print_message("\nBootstrap complete. Run 'audiagentic' from any project directory.")
|
|
57
|
+
if target != global_harness_runtime():
|
|
58
|
+
print_message(f"Set AUDIAGENTIC_HOME={target.parent} to use this location.")
|
|
59
|
+
return 0
|
|
60
|
+
|
|
61
|
+
|
|
62
|
+
def cmd_bootstrap(args: argparse.Namespace, project_root: Path) -> int:
|
|
63
|
+
target = Path(args.target).resolve() if args.target else global_harness_runtime()
|
|
64
|
+
return _cmd_bootstrap(target, project_root)
|
|
65
|
+
|
|
66
|
+
|
|
67
|
+
def cmd_cleanup(args: argparse.Namespace, project_root: Path) -> int:
|
|
68
|
+
del project_root
|
|
69
|
+
target = Path(args.target).resolve() if args.target else global_harness_runtime()
|
|
70
|
+
print_message(f"Removing AUDiaGentic-generated runtime files from {target}")
|
|
71
|
+
return cleanup_runtime(target)
|
|
72
|
+
|
|
73
|
+
|
|
74
|
+
def _omit_empty_values(value: object) -> object:
|
|
75
|
+
"""Return CLI-safe data without null or empty optional fields."""
|
|
76
|
+
if isinstance(value, dict):
|
|
77
|
+
return {
|
|
78
|
+
key: cleaned
|
|
79
|
+
for key, item in value.items()
|
|
80
|
+
if (cleaned := _omit_empty_values(item)) is not None
|
|
81
|
+
and cleaned != ""
|
|
82
|
+
and cleaned != []
|
|
83
|
+
and cleaned != {}
|
|
84
|
+
}
|
|
85
|
+
if isinstance(value, list):
|
|
86
|
+
return [_omit_empty_values(item) for item in value]
|
|
87
|
+
return value
|
|
88
|
+
|
|
89
|
+
|
|
90
|
+
def _surface_results_to_json(results: object) -> list[dict[str, object]]:
|
|
91
|
+
"""Serialize generated-surface API results for CLI output."""
|
|
92
|
+
values = results if isinstance(results, list) else [results]
|
|
93
|
+
serialized: list[dict[str, object]] = []
|
|
94
|
+
for value in values:
|
|
95
|
+
converter = getattr(value, "to_mapping", None)
|
|
96
|
+
if callable(converter):
|
|
97
|
+
value = converter()
|
|
98
|
+
mapping = dict(value) if isinstance(value, dict) else {"result": str(value)}
|
|
99
|
+
cleaned = _omit_empty_values(mapping)
|
|
100
|
+
serialized.append(cleaned if isinstance(cleaned, dict) else {})
|
|
101
|
+
return serialized
|
|
102
|
+
|
|
103
|
+
|
|
104
|
+
def _config_summary(
|
|
105
|
+
*,
|
|
106
|
+
mode: str,
|
|
107
|
+
project_root: Path,
|
|
108
|
+
surface_results: list[dict[str, object]],
|
|
109
|
+
provider_errors: list[dict[str, object]],
|
|
110
|
+
) -> dict[str, object]:
|
|
111
|
+
written = sorted({
|
|
112
|
+
path
|
|
113
|
+
for result in surface_results
|
|
114
|
+
for path in result.get("written_paths", [])
|
|
115
|
+
if isinstance(path, str)
|
|
116
|
+
})
|
|
117
|
+
removed = sorted({
|
|
118
|
+
path
|
|
119
|
+
for result in surface_results
|
|
120
|
+
for path in result.get("removed_paths", [])
|
|
121
|
+
if isinstance(path, str)
|
|
122
|
+
})
|
|
123
|
+
surface_errors = [
|
|
124
|
+
result
|
|
125
|
+
for result in surface_results
|
|
126
|
+
if not result.get("ok", False) and result.get("supported", True)
|
|
127
|
+
]
|
|
128
|
+
errors = [*surface_errors, *provider_errors]
|
|
129
|
+
changed = bool(written or removed or any(result.get("changed") for result in surface_results))
|
|
130
|
+
summary: dict[str, object] = {
|
|
131
|
+
"ok": not errors,
|
|
132
|
+
"mode": mode,
|
|
133
|
+
"project_root": str(project_root),
|
|
134
|
+
"changed": changed,
|
|
135
|
+
"message": (
|
|
136
|
+
"Configuration refreshed."
|
|
137
|
+
if changed and mode == "apply"
|
|
138
|
+
else "Configuration is already synchronized."
|
|
139
|
+
if mode == "apply"
|
|
140
|
+
else "Configuration is already clean."
|
|
141
|
+
if not changed
|
|
142
|
+
else "Configuration cleaned."
|
|
143
|
+
),
|
|
144
|
+
}
|
|
145
|
+
if written:
|
|
146
|
+
summary["written_paths"] = written
|
|
147
|
+
if removed:
|
|
148
|
+
summary["removed_paths"] = removed
|
|
149
|
+
if errors:
|
|
150
|
+
summary["errors"] = errors
|
|
151
|
+
return summary
|
|
152
|
+
|
|
153
|
+
|
|
154
|
+
def _config_operation(project_root: Path, *, mode: str, clean_runtime: bool) -> int:
|
|
155
|
+
"""Run an ownership-aware config operation and report partial failures."""
|
|
156
|
+
target = global_harness_runtime()
|
|
157
|
+
from audiagentic.components.providers import providers_api
|
|
158
|
+
from audiagentic.components.providers.services.mcp.mcp_sync import (
|
|
159
|
+
sync_all_provider_mcp_servers,
|
|
160
|
+
)
|
|
161
|
+
|
|
162
|
+
output: dict[str, object] = {"ok": True, "mode": mode, "project_root": str(project_root)}
|
|
163
|
+
try:
|
|
164
|
+
surface_results = _surface_results_to_json(
|
|
165
|
+
providers_api.operate_provider_surfaces(project_root, mode=mode)
|
|
166
|
+
)
|
|
167
|
+
provider_errors = sync_all_provider_mcp_servers(project_root)
|
|
168
|
+
if clean_runtime:
|
|
169
|
+
cleanup_runtime(target)
|
|
170
|
+
else:
|
|
171
|
+
refresh_materialized_agent_config(target, project_root=project_root)
|
|
172
|
+
request_runtime_reload(project_root, reason=f"config-{mode}")
|
|
173
|
+
except Exception as exc: # noqa: BLE001
|
|
174
|
+
output["ok"] = False
|
|
175
|
+
output["errors"] = [str(exc)]
|
|
176
|
+
print_json(_omit_empty_values(output))
|
|
177
|
+
return 1
|
|
178
|
+
|
|
179
|
+
output = _config_summary(
|
|
180
|
+
mode=mode,
|
|
181
|
+
project_root=project_root,
|
|
182
|
+
surface_results=surface_results,
|
|
183
|
+
provider_errors=provider_errors,
|
|
184
|
+
)
|
|
185
|
+
print_json(_omit_empty_values(output))
|
|
186
|
+
return 0 if output["ok"] else 1
|
|
187
|
+
|
|
188
|
+
|
|
189
|
+
def cmd_config_sync(args: argparse.Namespace, project_root: Path) -> int:
|
|
190
|
+
"""Refresh all generated surfaces and configured provider configs."""
|
|
191
|
+
if args.config_cmd == "clean":
|
|
192
|
+
return cmd_config_clean(args, project_root)
|
|
193
|
+
return _config_operation(project_root, mode="apply", clean_runtime=False)
|
|
194
|
+
|
|
195
|
+
|
|
196
|
+
def cmd_config_clean(args: argparse.Namespace, project_root: Path) -> int:
|
|
197
|
+
"""Prune owned surfaces, synchronize stale provider entries, and clean runtime."""
|
|
198
|
+
del args
|
|
199
|
+
return _config_operation(project_root, mode="prune", clean_runtime=True)
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import argparse
|
|
4
|
+
import logging
|
|
5
|
+
import shutil
|
|
6
|
+
from collections.abc import Callable
|
|
7
|
+
from pathlib import Path
|
|
8
|
+
from typing import Any
|
|
9
|
+
|
|
10
|
+
from audiagentic.foundation.cli_io import print_json
|
|
11
|
+
|
|
12
|
+
logger = logging.getLogger(__name__)
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def _cmd_component_list(_args: Any, project_root: Path) -> int:
|
|
16
|
+
from audiagentic.foundation.components.registry import (
|
|
17
|
+
all_descriptors,
|
|
18
|
+
get_descriptor,
|
|
19
|
+
is_enabled,
|
|
20
|
+
is_installed,
|
|
21
|
+
)
|
|
22
|
+
|
|
23
|
+
rows = []
|
|
24
|
+
for cid, desc in sorted(all_descriptors().items()):
|
|
25
|
+
installed = is_installed(cid, project_root)
|
|
26
|
+
enabled = is_enabled(cid, project_root) if installed else None
|
|
27
|
+
state = "disabled" if (installed and not enabled) else ("installed" if installed else "not-installed")
|
|
28
|
+
row: dict[str, Any] = {
|
|
29
|
+
"component_id": cid,
|
|
30
|
+
"display_name": desc.display_name,
|
|
31
|
+
"installed": installed,
|
|
32
|
+
"enabled": enabled,
|
|
33
|
+
"state": state,
|
|
34
|
+
"scope": desc.scope,
|
|
35
|
+
}
|
|
36
|
+
if desc.scope == "project" and (getattr(desc, "cli_probe", None)):
|
|
37
|
+
prov_descriptor = get_descriptor("providers")
|
|
38
|
+
if prov_descriptor:
|
|
39
|
+
from audiagentic.components.providers.descriptors.registry import (
|
|
40
|
+
get_descriptor as _get_provider_descriptor,
|
|
41
|
+
)
|
|
42
|
+
prov_desc = _get_provider_descriptor(cid)
|
|
43
|
+
if prov_desc and prov_desc.cli_probe:
|
|
44
|
+
row["cli_available"] = shutil.which(prov_desc.cli_probe[0]) is not None
|
|
45
|
+
rows.append(row)
|
|
46
|
+
print_json(rows)
|
|
47
|
+
return 0
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
def _cmd_component_status(args: Any, project_root: Path) -> int:
|
|
51
|
+
from audiagentic.foundation.components.hooks import get_component_status
|
|
52
|
+
from audiagentic.foundation.components.registry import (
|
|
53
|
+
get_descriptor,
|
|
54
|
+
is_enabled,
|
|
55
|
+
is_installed,
|
|
56
|
+
)
|
|
57
|
+
|
|
58
|
+
component_id: str = args.component_id
|
|
59
|
+
|
|
60
|
+
descriptor = get_descriptor(component_id)
|
|
61
|
+
if descriptor is None:
|
|
62
|
+
print_json({"ok": False, "error": f"unknown component: {component_id}"})
|
|
63
|
+
return 1
|
|
64
|
+
|
|
65
|
+
installed = is_installed(component_id, project_root)
|
|
66
|
+
result: dict[str, Any] = {
|
|
67
|
+
"component_id": component_id,
|
|
68
|
+
"installed": installed,
|
|
69
|
+
"enabled": is_enabled(component_id, project_root) if installed else None,
|
|
70
|
+
}
|
|
71
|
+
# Surface the component's own status (configuration completeness, next steps)
|
|
72
|
+
# when it declares a status hook. Generic — the CLI never branches on id.
|
|
73
|
+
detail = get_component_status(descriptor, project_root)
|
|
74
|
+
if detail is not None:
|
|
75
|
+
result["detail"] = detail
|
|
76
|
+
print_json(result)
|
|
77
|
+
return 0
|
|
78
|
+
|
|
79
|
+
|
|
80
|
+
_SUBCOMMAND_REGISTRY: dict[str, Callable] = {
|
|
81
|
+
"list": _cmd_component_list,
|
|
82
|
+
"status": _cmd_component_status,
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
def _cmd_component(args: argparse.Namespace, project_root: Path) -> int:
|
|
87
|
+
from audiagentic.components.project import project_api
|
|
88
|
+
from audiagentic.foundation.components.registry import get_descriptor
|
|
89
|
+
|
|
90
|
+
sub = args.component_cmd
|
|
91
|
+
|
|
92
|
+
handler = _SUBCOMMAND_REGISTRY.get(sub)
|
|
93
|
+
if handler:
|
|
94
|
+
return handler(args, project_root)
|
|
95
|
+
|
|
96
|
+
component_id: str = args.component_id
|
|
97
|
+
|
|
98
|
+
if get_descriptor(component_id) is None:
|
|
99
|
+
print_json({"ok": False, "error": f"unknown component: {component_id}"})
|
|
100
|
+
return 1
|
|
101
|
+
|
|
102
|
+
DISPATCH = {
|
|
103
|
+
"install": ("install_component", {}),
|
|
104
|
+
"uninstall": ("uninstall_component", {"remove_configs": getattr(args, "remove_configs", False)}),
|
|
105
|
+
"enable": ("enable_component", {}),
|
|
106
|
+
"disable": ("disable_component", {}),
|
|
107
|
+
}
|
|
108
|
+
|
|
109
|
+
if sub in DISPATCH:
|
|
110
|
+
api_method, extra_kwargs = DISPATCH[sub]
|
|
111
|
+
result = getattr(project_api, f"{api_method}")(project_root, component_id, **extra_kwargs)
|
|
112
|
+
print_json(result)
|
|
113
|
+
return 0 if result.get("ok", True) else 1
|
|
114
|
+
|
|
115
|
+
return 1
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
"""Explicit standalone gateway service command and lifecycle CLI (SH10 Slice A).
|
|
2
|
+
|
|
3
|
+
This module owns ``gateway serve`` (existing) and the SH10 operator lifecycle
|
|
4
|
+
sub-commands: ``status``, ``drain``, ``resume``, ``stop [--force]``, and
|
|
5
|
+
``recover [--confirm] [--reason]``. Lifecycle handlers dispatch exactly once
|
|
6
|
+
through the standalone gateway client (HTTP) or the record-only recovery
|
|
7
|
+
helper; they contain no lifecycle/store/signal logic.
|
|
8
|
+
"""
|
|
9
|
+
from __future__ import annotations
|
|
10
|
+
|
|
11
|
+
import argparse
|
|
12
|
+
import contextlib
|
|
13
|
+
import json
|
|
14
|
+
import os
|
|
15
|
+
import signal
|
|
16
|
+
import sys
|
|
17
|
+
from pathlib import Path
|
|
18
|
+
from typing import TYPE_CHECKING
|
|
19
|
+
|
|
20
|
+
if TYPE_CHECKING:
|
|
21
|
+
from audiagentic.components.agents.gateway.remote_client import (
|
|
22
|
+
StandaloneGatewayClient,
|
|
23
|
+
)
|
|
24
|
+
from audiagentic.components.agents.gateway.service.host import GatewayServiceHost
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def _standalone_client_from_env() -> StandaloneGatewayClient:
|
|
28
|
+
"""Build a StandaloneGatewayClient from environment (same env as get_gateway_client)."""
|
|
29
|
+
from audiagentic.components.agents.gateway.remote_client import (
|
|
30
|
+
StandaloneGatewayClient,
|
|
31
|
+
load_auth_token,
|
|
32
|
+
)
|
|
33
|
+
|
|
34
|
+
endpoint = os.environ.get("AUDIAGENTIC_GATEWAY_ENDPOINT")
|
|
35
|
+
token_file = os.environ.get("AUDIAGENTIC_GATEWAY_TOKEN_FILE")
|
|
36
|
+
if not endpoint or not token_file:
|
|
37
|
+
print(
|
|
38
|
+
"error: standalone gateway client requires "
|
|
39
|
+
"AUDIAGENTIC_GATEWAY_ENDPOINT and AUDIAGENTIC_GATEWAY_TOKEN_FILE",
|
|
40
|
+
file=sys.stderr,
|
|
41
|
+
)
|
|
42
|
+
sys.exit(1)
|
|
43
|
+
return StandaloneGatewayClient(endpoint, load_auth_token(Path(token_file)))
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
# - serve (existing) -
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
class _ShutdownState:
|
|
50
|
+
"""Mutable flag set by the signal handler, read after serve_forever() returns.
|
|
51
|
+
|
|
52
|
+
A plain attribute container rather than a bool local: the handler is a
|
|
53
|
+
closure invoked asynchronously by the interpreter's signal machinery, so
|
|
54
|
+
it needs a mutable object to record onto, not a rebound name.
|
|
55
|
+
"""
|
|
56
|
+
|
|
57
|
+
def __init__(self) -> None:
|
|
58
|
+
self.forced_fallback = False
|
|
59
|
+
|
|
60
|
+
|
|
61
|
+
def _shutdown_signals() -> list[int]:
|
|
62
|
+
"""SIGINT/SIGTERM always; SIGBREAK too on Windows (CTRL_CLOSE/taskkill
|
|
63
|
+
maps there, not to SIGTERM). A hard TerminateProcess/-9 runs no handler —
|
|
64
|
+
that is covered by the next start's owner-claim liveness check and SH07
|
|
65
|
+
recovery, not by anything here."""
|
|
66
|
+
sigs = [signal.SIGINT, signal.SIGTERM]
|
|
67
|
+
win_break = getattr(signal, "SIGBREAK", None)
|
|
68
|
+
if win_break is not None:
|
|
69
|
+
sigs.append(win_break)
|
|
70
|
+
return sigs
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
def _install_shutdown_signals(host: GatewayServiceHost) -> _ShutdownState:
|
|
74
|
+
"""Drain-first signal handling for the serving process (SH10 Slice B).
|
|
75
|
+
|
|
76
|
+
Refuse-force semantics make no sense on an OS kill signal -- there is no
|
|
77
|
+
interactive way to "drain first" in response to SIGTERM, so this goes
|
|
78
|
+
straight to a forced stop. If that itself fails for some reason, fall
|
|
79
|
+
back to a raw server shutdown so the process still exits rather than
|
|
80
|
+
hanging on a broken lifecycle path.
|
|
81
|
+
"""
|
|
82
|
+
state = _ShutdownState()
|
|
83
|
+
|
|
84
|
+
def _handler(signum: int, _frame: object) -> None:
|
|
85
|
+
del signum
|
|
86
|
+
try:
|
|
87
|
+
if host.lifecycle is not None:
|
|
88
|
+
host.lifecycle.request_stop(force=True)
|
|
89
|
+
else:
|
|
90
|
+
host.shutdown()
|
|
91
|
+
except Exception:
|
|
92
|
+
state.forced_fallback = True
|
|
93
|
+
with contextlib.suppress(Exception):
|
|
94
|
+
host.shutdown()
|
|
95
|
+
|
|
96
|
+
for sig in _shutdown_signals():
|
|
97
|
+
with contextlib.suppress(OSError, ValueError):
|
|
98
|
+
signal.signal(sig, _handler)
|
|
99
|
+
return state
|
|
100
|
+
|
|
101
|
+
|
|
102
|
+
def cmd_gateway(args: argparse.Namespace, project_root: Path) -> int:
|
|
103
|
+
del project_root
|
|
104
|
+
if args.gateway_cmd != "serve":
|
|
105
|
+
raise ValueError(f"unsupported gateway command: {args.gateway_cmd}")
|
|
106
|
+
from audiagentic.components.agents.gateway.service.host import GatewayServiceHost
|
|
107
|
+
|
|
108
|
+
host = GatewayServiceHost.create(
|
|
109
|
+
host=args.host,
|
|
110
|
+
port=args.port,
|
|
111
|
+
token_path=Path(args.token_file).resolve() if args.token_file else None,
|
|
112
|
+
)
|
|
113
|
+
print(f"gateway endpoint: {host.endpoint}")
|
|
114
|
+
print(f"gateway token file: {host.token_path}")
|
|
115
|
+
shutdown_state = _install_shutdown_signals(host)
|
|
116
|
+
try:
|
|
117
|
+
host.serve_forever()
|
|
118
|
+
except KeyboardInterrupt:
|
|
119
|
+
return 0
|
|
120
|
+
finally:
|
|
121
|
+
host.close()
|
|
122
|
+
return 1 if shutdown_state.forced_fallback else 0
|
|
123
|
+
|
|
124
|
+
|
|
125
|
+
# - SH10 lifecycle operators -
|
|
126
|
+
|
|
127
|
+
def _json_out(data: object) -> None:
|
|
128
|
+
"""Print redacted JSON to stdout."""
|
|
129
|
+
print(json.dumps(data, indent=2, default=str))
|
|
130
|
+
|
|
131
|
+
|
|
132
|
+
def cmd_gateway_status(args: argparse.Namespace, project_root: Path) -> int:
|
|
133
|
+
"""gateway status - query service state via HTTP client."""
|
|
134
|
+
client = _standalone_client_from_env()
|
|
135
|
+
try:
|
|
136
|
+
result = client.service_status(project_root)
|
|
137
|
+
finally:
|
|
138
|
+
client.close()
|
|
139
|
+
_json_out(result)
|
|
140
|
+
return 0
|
|
141
|
+
|
|
142
|
+
|
|
143
|
+
def cmd_gateway_drain(args: argparse.Namespace, project_root: Path) -> int:
|
|
144
|
+
"""gateway drain - begin graceful drain via HTTP client."""
|
|
145
|
+
del args
|
|
146
|
+
client = _standalone_client_from_env()
|
|
147
|
+
try:
|
|
148
|
+
result = client.service_drain(project_root)
|
|
149
|
+
finally:
|
|
150
|
+
client.close()
|
|
151
|
+
_json_out(result)
|
|
152
|
+
return 0
|
|
153
|
+
|
|
154
|
+
|
|
155
|
+
def cmd_gateway_resume(args: argparse.Namespace, project_root: Path) -> int:
|
|
156
|
+
"""gateway resume - cancel draining via HTTP client."""
|
|
157
|
+
del args
|
|
158
|
+
client = _standalone_client_from_env()
|
|
159
|
+
try:
|
|
160
|
+
result = client.service_resume(project_root)
|
|
161
|
+
finally:
|
|
162
|
+
client.close()
|
|
163
|
+
_json_out(result)
|
|
164
|
+
return 0
|
|
165
|
+
|
|
166
|
+
|
|
167
|
+
def cmd_gateway_stop(args: argparse.Namespace, project_root: Path) -> int:
|
|
168
|
+
"""gateway stop [--force] - request operator stop via HTTP client."""
|
|
169
|
+
client = _standalone_client_from_env()
|
|
170
|
+
try:
|
|
171
|
+
result = client.service_stop(project_root, force=args.force)
|
|
172
|
+
finally:
|
|
173
|
+
client.close()
|
|
174
|
+
_json_out(result)
|
|
175
|
+
return 0
|
|
176
|
+
|
|
177
|
+
|
|
178
|
+
def cmd_gateway_recover(args: argparse.Namespace, project_root: Path) -> int:
|
|
179
|
+
"""gateway recover - record-only dead-owner recovery (never HTTP).
|
|
180
|
+
|
|
181
|
+
Deliberately bypasses the HTTP client because recovery targets a
|
|
182
|
+
dead/unprovable service; it goes straight to the store via the
|
|
183
|
+
lifecycle module.
|
|
184
|
+
"""
|
|
185
|
+
from audiagentic.components.agents.gateway.service.lifecycle import (
|
|
186
|
+
recover_unprovable_owner,
|
|
187
|
+
)
|
|
188
|
+
|
|
189
|
+
# Automatic gateway ownership is machine-scoped. Recovery must address
|
|
190
|
+
# the same default machine store as bootstrap, not synthesize a second
|
|
191
|
+
# project-local managed-service record beneath ``project_root``.
|
|
192
|
+
result = recover_unprovable_owner(confirm=args.confirm, reason=args.reason)
|
|
193
|
+
_json_out(result)
|
|
194
|
+
return 0
|
|
195
|
+
|
|
196
|
+
|
|
197
|
+
__all__ = [
|
|
198
|
+
"cmd_gateway",
|
|
199
|
+
"cmd_gateway_drain",
|
|
200
|
+
"cmd_gateway_recover",
|
|
201
|
+
"cmd_gateway_resume",
|
|
202
|
+
"cmd_gateway_status",
|
|
203
|
+
"cmd_gateway_stop",
|
|
204
|
+
]
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
"""Private process-entry handlers used by generated harness configuration."""
|
|
2
|
+
from __future__ import annotations
|
|
3
|
+
|
|
4
|
+
import argparse
|
|
5
|
+
import importlib
|
|
6
|
+
import sys
|
|
7
|
+
from pathlib import Path
|
|
8
|
+
|
|
9
|
+
from audiagentic.foundation.contracts.errors import make_error
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
def cmd_mcp(args: argparse.Namespace, project_root: Path) -> int:
|
|
13
|
+
"""Run a configured component MCP module over stdio.
|
|
14
|
+
|
|
15
|
+
This is intentionally an internal launcher contract: generated MCP config
|
|
16
|
+
invokes it, but it is not part of the supported interactive CLI surface.
|
|
17
|
+
"""
|
|
18
|
+
del project_root
|
|
19
|
+
module = importlib.import_module(args.module)
|
|
20
|
+
main = getattr(module, "main", None)
|
|
21
|
+
if not callable(main):
|
|
22
|
+
raise make_error(
|
|
23
|
+
prefix="CFG",
|
|
24
|
+
component="MCP",
|
|
25
|
+
number=2,
|
|
26
|
+
kind="mcp",
|
|
27
|
+
message="MCP module does not expose a callable main().",
|
|
28
|
+
details={"module": args.module},
|
|
29
|
+
)
|
|
30
|
+
original_argv = sys.argv
|
|
31
|
+
try:
|
|
32
|
+
sys.argv = [args.module, *(args.module_args or [])]
|
|
33
|
+
result = main()
|
|
34
|
+
finally:
|
|
35
|
+
sys.argv = original_argv
|
|
36
|
+
return result if isinstance(result, int) else 0
|