alloy-runtime-cli 0.1.0__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.
- alloy_runtime_cli-0.1.0.dist-info/METADATA +61 -0
- alloy_runtime_cli-0.1.0.dist-info/RECORD +451 -0
- alloy_runtime_cli-0.1.0.dist-info/WHEEL +5 -0
- alloy_runtime_cli-0.1.0.dist-info/entry_points.txt +2 -0
- alloy_runtime_cli-0.1.0.dist-info/top_level.txt +1 -0
- cli/__init__.py +0 -0
- cli/commands/__init__.py +0 -0
- cli/commands/admin/__init__.py +0 -0
- cli/commands/admin/bootstrap_command.py +118 -0
- cli/commands/admin/credentials/__init__.py +0 -0
- cli/commands/admin/credentials/create/__init__.py +0 -0
- cli/commands/admin/credentials/create/command.py +148 -0
- cli/commands/admin/credentials/create/presenter.py +16 -0
- cli/commands/admin/credentials/grant/__init__.py +0 -0
- cli/commands/admin/credentials/grant/command.py +119 -0
- cli/commands/admin/credentials/grant/fields.py +33 -0
- cli/commands/admin/credentials/grant/presenter.py +23 -0
- cli/commands/agents/__init__.py +0 -0
- cli/commands/agents/create/__init__.py +0 -0
- cli/commands/agents/create/command.py +475 -0
- cli/commands/agents/create/fields.py +64 -0
- cli/commands/agents/create/presenter.py +68 -0
- cli/commands/agents/delete/__init__.py +0 -0
- cli/commands/agents/delete/command.py +47 -0
- cli/commands/agents/delete/presenter.py +16 -0
- cli/commands/agents/get/command.py +37 -0
- cli/commands/agents/get/presenter.py +32 -0
- cli/commands/agents/list/__init__.py +1 -0
- cli/commands/agents/list/command.py +54 -0
- cli/commands/agents/list/presenter.py +82 -0
- cli/commands/agents/update/__init__.py +0 -0
- cli/commands/agents/update/command.py +435 -0
- cli/commands/agents/update/fields.py +40 -0
- cli/commands/agents/update/presenter.py +68 -0
- cli/commands/audio/__init__.py +0 -0
- cli/commands/audio/transcribe/__init__.py +0 -0
- cli/commands/audio/transcribe/command.py +144 -0
- cli/commands/audio/transcribe/presenter.py +15 -0
- cli/commands/auth/__init__.py +0 -0
- cli/commands/auth/login/__init__.py +0 -0
- cli/commands/auth/login/command.py +80 -0
- cli/commands/auth/signup/__init__.py +0 -0
- cli/commands/auth/signup/command.py +115 -0
- cli/commands/billing/__init__.py +1 -0
- cli/commands/billing/costs/__init__.py +1 -0
- cli/commands/billing/costs/by_agent/__init__.py +1 -0
- cli/commands/billing/costs/by_agent/command.py +57 -0
- cli/commands/billing/costs/by_agent/presenter.py +81 -0
- cli/commands/billing/costs/by_model/__init__.py +1 -0
- cli/commands/billing/costs/by_model/command.py +57 -0
- cli/commands/billing/costs/by_model/presenter.py +80 -0
- cli/commands/billing/costs/daily/__init__.py +1 -0
- cli/commands/billing/costs/daily/command.py +55 -0
- cli/commands/billing/costs/daily/presenter.py +75 -0
- cli/commands/billing/costs/summary/__init__.py +1 -0
- cli/commands/billing/costs/summary/command.py +57 -0
- cli/commands/billing/costs/summary/presenter.py +42 -0
- cli/commands/billing/projects/__init__.py +1 -0
- cli/commands/billing/projects/create/__init__.py +1 -0
- cli/commands/billing/projects/create/command.py +60 -0
- cli/commands/billing/projects/create/presenter.py +26 -0
- cli/commands/billing/projects/get/__init__.py +1 -0
- cli/commands/billing/projects/get/command.py +33 -0
- cli/commands/billing/projects/get/presenter.py +32 -0
- cli/commands/billing/projects/list/__init__.py +1 -0
- cli/commands/billing/projects/list/command.py +40 -0
- cli/commands/billing/projects/list/presenter.py +57 -0
- cli/commands/content/__init__.py +1 -0
- cli/commands/content/delete/__init__.py +0 -0
- cli/commands/content/delete/command.py +49 -0
- cli/commands/content/delete/presenter.py +18 -0
- cli/commands/content/edit/__init__.py +1 -0
- cli/commands/content/edit/command.py +155 -0
- cli/commands/content/edit/editor.py +150 -0
- cli/commands/content/edit/presenter.py +146 -0
- cli/commands/content/get/__init__.py +1 -0
- cli/commands/content/get/command.py +39 -0
- cli/commands/content/get/presenter.py +176 -0
- cli/commands/content/list/__init__.py +1 -0
- cli/commands/content/list/command.py +347 -0
- cli/commands/content/list/export_formatters.py +409 -0
- cli/commands/content/list/export_handler.py +165 -0
- cli/commands/content/list/presenter.py +190 -0
- cli/commands/credentials/__init__.py +0 -0
- cli/commands/credentials/create/__init__.py +0 -0
- cli/commands/credentials/create/command.py +165 -0
- cli/commands/credentials/create/fields.py +38 -0
- cli/commands/credentials/create/presenter.py +20 -0
- cli/commands/credentials/update/__init__.py +0 -0
- cli/commands/credentials/update/command.py +53 -0
- cli/commands/credentials/update/fields.py +71 -0
- cli/commands/credentials/update/presenter.py +16 -0
- cli/commands/flag_utils.py +366 -0
- cli/commands/generate/__init__.py +0 -0
- cli/commands/generate/cancel/__init__.py +1 -0
- cli/commands/generate/cancel/command.py +44 -0
- cli/commands/generate/cancel/presenter.py +26 -0
- cli/commands/generate/status/__init__.py +1 -0
- cli/commands/generate/status/command.py +58 -0
- cli/commands/generate/status/presenter.py +78 -0
- cli/commands/generate/text/__init__.py +0 -0
- cli/commands/generate/text/command.py +1325 -0
- cli/commands/generate/text/concurrent_renderer.py +355 -0
- cli/commands/generate/text/presenter.py +287 -0
- cli/commands/generate/text/stream_renderer.py +129 -0
- cli/commands/knowledge/__init__.py +0 -0
- cli/commands/knowledge/collections/__init__.py +0 -0
- cli/commands/knowledge/collections/cluster/__init__.py +0 -0
- cli/commands/knowledge/collections/cluster/command.py +64 -0
- cli/commands/knowledge/collections/cluster/presenter.py +74 -0
- cli/commands/knowledge/collections/cluster_status/__init__.py +0 -0
- cli/commands/knowledge/collections/cluster_status/command.py +46 -0
- cli/commands/knowledge/collections/cluster_status/presenter.py +10 -0
- cli/commands/knowledge/collections/create/__init__.py +0 -0
- cli/commands/knowledge/collections/create/command.py +137 -0
- cli/commands/knowledge/collections/create/presenter.py +38 -0
- cli/commands/knowledge/collections/delete/__init__.py +1 -0
- cli/commands/knowledge/collections/delete/command.py +47 -0
- cli/commands/knowledge/collections/delete/presenter.py +20 -0
- cli/commands/knowledge/collections/get/__init__.py +1 -0
- cli/commands/knowledge/collections/get/command.py +30 -0
- cli/commands/knowledge/collections/get/presenter.py +44 -0
- cli/commands/knowledge/collections/list/__init__.py +1 -0
- cli/commands/knowledge/collections/list/command.py +41 -0
- cli/commands/knowledge/collections/list/presenter.py +68 -0
- cli/commands/knowledge/collections/update/__init__.py +0 -0
- cli/commands/knowledge/collections/update/command.py +97 -0
- cli/commands/knowledge/collections/update/presenter.py +42 -0
- cli/commands/knowledge/documents/__init__.py +0 -0
- cli/commands/knowledge/documents/bulk_metadata/__init__.py +0 -0
- cli/commands/knowledge/documents/bulk_metadata/command.py +119 -0
- cli/commands/knowledge/documents/bulk_metadata/presenter.py +36 -0
- cli/commands/knowledge/documents/delete/__init__.py +0 -0
- cli/commands/knowledge/documents/delete/command.py +47 -0
- cli/commands/knowledge/documents/delete/presenter.py +20 -0
- cli/commands/knowledge/documents/get/__init__.py +0 -0
- cli/commands/knowledge/documents/get/command.py +39 -0
- cli/commands/knowledge/documents/get/presenter.py +78 -0
- cli/commands/knowledge/documents/ingest/__init__.py +0 -0
- cli/commands/knowledge/documents/ingest/command.py +222 -0
- cli/commands/knowledge/documents/ingest/presenter.py +41 -0
- cli/commands/knowledge/documents/list/__init__.py +0 -0
- cli/commands/knowledge/documents/list/command.py +69 -0
- cli/commands/knowledge/documents/list/presenter.py +86 -0
- cli/commands/knowledge/documents/reingest/__init__.py +0 -0
- cli/commands/knowledge/documents/reingest/command.py +102 -0
- cli/commands/knowledge/documents/reingest/presenter.py +70 -0
- cli/commands/knowledge/documents/update/__init__.py +0 -0
- cli/commands/knowledge/documents/update/command.py +85 -0
- cli/commands/knowledge/documents/update/presenter.py +37 -0
- cli/commands/knowledge/recover/__init__.py +0 -0
- cli/commands/knowledge/recover/command.py +46 -0
- cli/commands/knowledge/recover/presenter.py +79 -0
- cli/commands/knowledge/search/__init__.py +0 -0
- cli/commands/knowledge/search/command.py +218 -0
- cli/commands/knowledge/search/presenter.py +111 -0
- cli/commands/knowledge/synthesis/__init__.py +0 -0
- cli/commands/knowledge/synthesis/create/__init__.py +0 -0
- cli/commands/knowledge/synthesis/create/command.py +127 -0
- cli/commands/knowledge/synthesis/create/presenter.py +33 -0
- cli/commands/knowledge/synthesis/delete/__init__.py +0 -0
- cli/commands/knowledge/synthesis/delete/command.py +53 -0
- cli/commands/knowledge/synthesis/delete/presenter.py +31 -0
- cli/commands/knowledge/synthesis/get/__init__.py +0 -0
- cli/commands/knowledge/synthesis/get/command.py +55 -0
- cli/commands/knowledge/synthesis/get/presenter.py +114 -0
- cli/commands/knowledge/synthesis/list/__init__.py +0 -0
- cli/commands/knowledge/synthesis/list/command.py +132 -0
- cli/commands/knowledge/synthesis/list/presenter.py +84 -0
- cli/commands/knowledge/synthesis/refresh/__init__.py +0 -0
- cli/commands/knowledge/synthesis/refresh/command.py +42 -0
- cli/commands/knowledge/synthesis/refresh/presenter.py +33 -0
- cli/commands/knowledge/synthesis/update/__init__.py +0 -0
- cli/commands/knowledge/synthesis/update/command.py +76 -0
- cli/commands/knowledge/synthesis/update/presenter.py +41 -0
- cli/commands/models/__init__.py +0 -0
- cli/commands/models/list/__init__.py +0 -0
- cli/commands/models/list/command.py +84 -0
- cli/commands/models/list/presenter.py +114 -0
- cli/commands/organizations/__init__.py +0 -0
- cli/commands/organizations/create/command.py +32 -0
- cli/commands/organizations/create/presenter.py +9 -0
- cli/commands/pipelines/__init__.py +1 -0
- cli/commands/pipelines/approvals/__init__.py +1 -0
- cli/commands/pipelines/approvals/decide_command.py +77 -0
- cli/commands/pipelines/approvals/get_command.py +44 -0
- cli/commands/pipelines/approvals/presenter.py +56 -0
- cli/commands/pipelines/costs/__init__.py +1 -0
- cli/commands/pipelines/costs/command.py +57 -0
- cli/commands/pipelines/costs/daily_command.py +54 -0
- cli/commands/pipelines/costs/daily_presenter.py +59 -0
- cli/commands/pipelines/costs/presenter.py +37 -0
- cli/commands/pipelines/create/__init__.py +1 -0
- cli/commands/pipelines/create/command.py +103 -0
- cli/commands/pipelines/create/presenter.py +22 -0
- cli/commands/pipelines/env_vars/__init__.py +1 -0
- cli/commands/pipelines/env_vars/command.py +51 -0
- cli/commands/pipelines/env_vars/presenter.py +16 -0
- cli/commands/pipelines/execute/__init__.py +1 -0
- cli/commands/pipelines/execute/command.py +142 -0
- cli/commands/pipelines/execute/presenter.py +47 -0
- cli/commands/pipelines/executions/__init__.py +1 -0
- cli/commands/pipelines/executions/costs/__init__.py +1 -0
- cli/commands/pipelines/executions/costs/command.py +48 -0
- cli/commands/pipelines/executions/costs/presenter.py +29 -0
- cli/commands/pipelines/executions/costs_by_model/__init__.py +1 -0
- cli/commands/pipelines/executions/costs_by_model/command.py +50 -0
- cli/commands/pipelines/executions/costs_by_model/presenter.py +78 -0
- cli/commands/pipelines/executions/costs_by_step/__init__.py +1 -0
- cli/commands/pipelines/executions/costs_by_step/command.py +50 -0
- cli/commands/pipelines/executions/costs_by_step/presenter.py +72 -0
- cli/commands/pipelines/executions/get_command.py +38 -0
- cli/commands/pipelines/executions/list_command.py +123 -0
- cli/commands/pipelines/executions/presenter.py +131 -0
- cli/commands/pipelines/executions/rerun_command.py +41 -0
- cli/commands/pipelines/executions/update/__init__.py +1 -0
- cli/commands/pipelines/executions/update/command.py +110 -0
- cli/commands/pipelines/executions/update/presenter.py +28 -0
- cli/commands/pipelines/get/__init__.py +1 -0
- cli/commands/pipelines/get/command.py +33 -0
- cli/commands/pipelines/get/presenter.py +48 -0
- cli/commands/pipelines/list/__init__.py +1 -0
- cli/commands/pipelines/list/command.py +53 -0
- cli/commands/pipelines/list/presenter.py +66 -0
- cli/commands/pipelines/schedules/__init__.py +1 -0
- cli/commands/pipelines/schedules/create_command.py +119 -0
- cli/commands/pipelines/schedules/create_presenter.py +35 -0
- cli/commands/pipelines/schedules/delete_command.py +52 -0
- cli/commands/pipelines/schedules/env_vars_command.py +59 -0
- cli/commands/pipelines/schedules/env_vars_presenter.py +16 -0
- cli/commands/pipelines/schedules/get_command.py +38 -0
- cli/commands/pipelines/schedules/list_command.py +33 -0
- cli/commands/pipelines/schedules/once_command.py +90 -0
- cli/commands/pipelines/schedules/once_presenter.py +30 -0
- cli/commands/pipelines/schedules/presenter.py +104 -0
- cli/commands/pipelines/schedules/update_command.py +139 -0
- cli/commands/pipelines/schedules/update_presenter.py +29 -0
- cli/commands/render/__init__.py +0 -0
- cli/commands/render/html_to_image/__init__.py +0 -0
- cli/commands/render/html_to_image/command.py +170 -0
- cli/commands/schemas/__init__.py +0 -0
- cli/commands/schemas/create/__init__.py +0 -0
- cli/commands/schemas/create/command.py +122 -0
- cli/commands/schemas/create/presenter.py +53 -0
- cli/commands/schemas/delete/command.py +45 -0
- cli/commands/schemas/delete/presenter.py +9 -0
- cli/commands/schemas/get/__init__.py +0 -0
- cli/commands/schemas/get/command.py +56 -0
- cli/commands/schemas/get/presenter.py +129 -0
- cli/commands/schemas/list/__init__.py +0 -0
- cli/commands/schemas/list/command.py +64 -0
- cli/commands/schemas/list/presenter.py +133 -0
- cli/commands/schemas/update/__init__.py +0 -0
- cli/commands/schemas/update/command.py +369 -0
- cli/commands/schemas/update/presenter.py +53 -0
- cli/commands/sessions/__init__.py +1 -0
- cli/commands/sessions/delete/__init__.py +1 -0
- cli/commands/sessions/delete/command.py +47 -0
- cli/commands/sessions/delete/presenter.py +10 -0
- cli/commands/sessions/get/__init__.py +1 -0
- cli/commands/sessions/get/command.py +42 -0
- cli/commands/sessions/get/presenter.py +59 -0
- cli/commands/sessions/list/__init__.py +1 -0
- cli/commands/sessions/list/command.py +61 -0
- cli/commands/sessions/list/presenter.py +68 -0
- cli/commands/sessions/messages/__init__.py +1 -0
- cli/commands/sessions/messages/command.py +78 -0
- cli/commands/sessions/messages/presenter.py +79 -0
- cli/commands/shared_flags.py +500 -0
- cli/commands/sync/__init__.py +0 -0
- cli/commands/sync/command.py +45 -0
- cli/commands/sync/presenter.py +49 -0
- cli/commands/tags/__init__.py +1 -0
- cli/commands/tags/create/__init__.py +1 -0
- cli/commands/tags/create/command.py +60 -0
- cli/commands/tags/delete/__init__.py +1 -0
- cli/commands/tags/delete/command.py +47 -0
- cli/commands/tags/delete/presenter.py +10 -0
- cli/commands/tags/get/command.py +31 -0
- cli/commands/tags/get/presenter.py +23 -0
- cli/commands/tags/list/__init__.py +1 -0
- cli/commands/tags/list/command.py +52 -0
- cli/commands/tags/list/presenter.py +49 -0
- cli/commands/tags/update/command.py +64 -0
- cli/commands/tags/update/presenter.py +9 -0
- cli/commands/templates/__init__.py +0 -0
- cli/commands/templates/create/__init__.py +0 -0
- cli/commands/templates/create/command.py +152 -0
- cli/commands/templates/create/presenter.py +86 -0
- cli/commands/templates/delete/__init__.py +0 -0
- cli/commands/templates/delete/command.py +47 -0
- cli/commands/templates/delete/presenter.py +16 -0
- cli/commands/templates/get/__init__.py +0 -0
- cli/commands/templates/get/command.py +52 -0
- cli/commands/templates/get/presenter.py +233 -0
- cli/commands/templates/get_by_version/command.py +32 -0
- cli/commands/templates/get_by_version/presenter.py +30 -0
- cli/commands/templates/list/__init__.py +1 -0
- cli/commands/templates/list/command.py +102 -0
- cli/commands/templates/list/presenter.py +93 -0
- cli/commands/templates/render/__init__.py +0 -0
- cli/commands/templates/render/command.py +115 -0
- cli/commands/templates/render/presenter.py +276 -0
- cli/commands/templates/update/__init__.py +0 -0
- cli/commands/templates/update/command.py +199 -0
- cli/commands/templates/update/presenter.py +94 -0
- cli/commands/templates/version/__init__.py +1 -0
- cli/commands/templates/version/command.py +116 -0
- cli/commands/templates/version/presenter.py +100 -0
- cli/commands/tool_configs/__init__.py +0 -0
- cli/commands/tool_configs/create/__init__.py +0 -0
- cli/commands/tool_configs/create/command.py +118 -0
- cli/commands/tool_configs/create/presenter.py +53 -0
- cli/commands/tool_configs/delete/__init__.py +0 -0
- cli/commands/tool_configs/delete/command.py +47 -0
- cli/commands/tool_configs/delete/presenter.py +18 -0
- cli/commands/tool_configs/get/__init__.py +0 -0
- cli/commands/tool_configs/get/command.py +31 -0
- cli/commands/tool_configs/get/presenter.py +62 -0
- cli/commands/tool_configs/list/__init__.py +0 -0
- cli/commands/tool_configs/list/command.py +59 -0
- cli/commands/tool_configs/list/presenter.py +60 -0
- cli/commands/tool_configs/update/__init__.py +0 -0
- cli/commands/tool_configs/update/command.py +128 -0
- cli/commands/tool_configs/update/presenter.py +53 -0
- cli/commands/tools/__init__.py +1 -0
- cli/commands/tools/get/__init__.py +1 -0
- cli/commands/tools/get/command.py +42 -0
- cli/commands/tools/get/presenter.py +45 -0
- cli/commands/tools/list/__init__.py +1 -0
- cli/commands/tools/list/command.py +56 -0
- cli/commands/tools/list/presenter.py +44 -0
- cli/commands/users/__init__.py +0 -0
- cli/commands/users/create/command.py +53 -0
- cli/commands/users/create/presenter.py +9 -0
- cli/commands/whoami/__init__.py +0 -0
- cli/commands/whoami/command.py +42 -0
- cli/infrastructure/__init__.py +0 -0
- cli/infrastructure/auth_storage.py +71 -0
- cli/infrastructure/client_factory.py +36 -0
- cli/infrastructure/command.py +75 -0
- cli/infrastructure/config.py +188 -0
- cli/infrastructure/console.py +27 -0
- cli/infrastructure/editor.py +138 -0
- cli/infrastructure/error_display.py +178 -0
- cli/infrastructure/field_extractor.py +360 -0
- cli/infrastructure/file_content.py +210 -0
- cli/infrastructure/filter_parser.py +256 -0
- cli/infrastructure/formatters/__init__.py +0 -0
- cli/infrastructure/formatters/base.py +99 -0
- cli/infrastructure/formatters/compact_formatter.py +245 -0
- cli/infrastructure/formatters/json_formatter.py +84 -0
- cli/infrastructure/formatters/lines_formatter.py +102 -0
- cli/infrastructure/formatting/__init__.py +0 -0
- cli/infrastructure/formatting/fields.py +193 -0
- cli/infrastructure/forms/__init__.py +0 -0
- cli/infrastructure/forms/agent_picker.py +123 -0
- cli/infrastructure/forms/agent_tool_editor.py +384 -0
- cli/infrastructure/forms/agent_tools_manager.py +212 -0
- cli/infrastructure/forms/base_picker.py +469 -0
- cli/infrastructure/forms/components.py +126 -0
- cli/infrastructure/forms/json_schema_builder.py +149 -0
- cli/infrastructure/forms/model_picker.py +134 -0
- cli/infrastructure/forms/parsers.py +173 -0
- cli/infrastructure/forms/resolution_modal.py +302 -0
- cli/infrastructure/forms/schema_picker.py +137 -0
- cli/infrastructure/forms/tag_management_modal.py +103 -0
- cli/infrastructure/forms/tag_picker.py +207 -0
- cli/infrastructure/forms/template_picker.py +131 -0
- cli/infrastructure/forms/tool_config_picker.py +130 -0
- cli/infrastructure/forms/tool_picker.py +103 -0
- cli/infrastructure/injection/__init__.py +0 -0
- cli/infrastructure/injection/parser.py +302 -0
- cli/infrastructure/injection/resolver.py +399 -0
- cli/infrastructure/kv_parser.py +130 -0
- cli/infrastructure/local_storage.py +227 -0
- cli/infrastructure/macro_parser.py +215 -0
- cli/infrastructure/output.py +192 -0
- cli/infrastructure/provider_setup.py +81 -0
- cli/infrastructure/renderers/__init__.py +0 -0
- cli/infrastructure/renderers/entity_renderer.py +77 -0
- cli/infrastructure/renderers/list_renderer.py +114 -0
- cli/infrastructure/scope_utils.py +47 -0
- cli/infrastructure/spinner.py +101 -0
- cli/infrastructure/tui/__init__.py +0 -0
- cli/infrastructure/tui/clipboard.py +41 -0
- cli/infrastructure/tui/formatters.py +105 -0
- cli/infrastructure/tui/preview.py +14 -0
- cli/infrastructure/tui/selectable.py +198 -0
- cli/infrastructure/validation/__init__.py +0 -0
- cli/infrastructure/validation/tag_validation.py +74 -0
- cli/main.py +759 -0
- cli/tui/__init__.py +0 -0
- cli/tui/app.py +199 -0
- cli/tui/app_store.py +73 -0
- cli/tui/chat/__init__.py +0 -0
- cli/tui/chat/commands/__init__.py +0 -0
- cli/tui/chat/commands/base.py +65 -0
- cli/tui/chat/commands/create_session.py +135 -0
- cli/tui/chat/commands/load_session.py +119 -0
- cli/tui/chat/commands/regenerate.py +120 -0
- cli/tui/chat/commands/reload_session.py +63 -0
- cli/tui/chat/commands/send_message.py +190 -0
- cli/tui/chat/commands/undo.py +66 -0
- cli/tui/chat/editor.py +71 -0
- cli/tui/chat/messages.py +223 -0
- cli/tui/chat/pane.py +141 -0
- cli/tui/chat/renderers/__init__.py +0 -0
- cli/tui/chat/renderers/base.py +72 -0
- cli/tui/chat/renderers/markdown.py +250 -0
- cli/tui/chat/renderers/plain.py +83 -0
- cli/tui/chat/screen.py +1155 -0
- cli/tui/chat/services/__init__.py +0 -0
- cli/tui/chat/services/injection.py +386 -0
- cli/tui/chat/services/name_generator.py +256 -0
- cli/tui/chat/slash_commands.py +424 -0
- cli/tui/chat/store.py +280 -0
- cli/tui/chat/types.py +220 -0
- cli/tui/chat/widgets/__init__.py +0 -0
- cli/tui/chat/widgets/chat_header.py +75 -0
- cli/tui/chat/widgets/chat_input.py +362 -0
- cli/tui/chat/widgets/injection_popup.py +161 -0
- cli/tui/chat/widgets/message_display.py +287 -0
- cli/tui/chat/widgets/session_sidebar.py +214 -0
- cli/tui/chat/widgets/welcome_screen.py +290 -0
- cli/tui/screens/__init__.py +0 -0
- cli/tui/screens/agents.py +344 -0
- cli/tui/screens/base.py +301 -0
- cli/tui/screens/content.py +508 -0
- cli/tui/screens/dashboard.py +89 -0
- cli/tui/screens/models.py +96 -0
- cli/tui/screens/nav_screen.py +186 -0
- cli/tui/screens/schemas.py +522 -0
- cli/tui/screens/templates.py +734 -0
- cli/tui/screens/tool_configs.py +335 -0
- cli/tui/styles/__init__.py +0 -0
- cli/tui/widgets/__init__.py +0 -0
- cli/tui/widgets/agent_create_modal.py +139 -0
- cli/tui/widgets/agent_form_modal.py +659 -0
- cli/tui/widgets/agent_update_modal.py +299 -0
- cli/tui/widgets/base_form_modal.py +77 -0
- cli/tui/widgets/confirm_modal.py +75 -0
- cli/tui/widgets/help_modal.py +145 -0
- cli/tui/widgets/new_session_modal.py +328 -0
- cli/tui/widgets/schema_create_modal.py +271 -0
- cli/tui/widgets/schema_update_modal.py +188 -0
- cli/tui/widgets/status_footer.py +147 -0
- cli/tui/widgets/template_create_modal.py +502 -0
- cli/tui/widgets/template_update_modal.py +308 -0
- cli/tui/widgets/tool_config_create_modal.py +216 -0
- cli/tui/widgets/tool_config_update_modal.py +208 -0
cli/main.py
ADDED
|
@@ -0,0 +1,759 @@
|
|
|
1
|
+
"""Alloy Runtime CLI main entry point.
|
|
2
|
+
|
|
3
|
+
This module defines the root Typer application and registers all command groups.
|
|
4
|
+
Running `alloy` with no arguments launches the unified TUI application.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
import os
|
|
8
|
+
from pathlib import Path
|
|
9
|
+
from typing import Optional
|
|
10
|
+
|
|
11
|
+
import typer
|
|
12
|
+
from rich.console import Console
|
|
13
|
+
|
|
14
|
+
from cli.commands.admin.credentials.create.command import (
|
|
15
|
+
admin_credentials_create_command,
|
|
16
|
+
)
|
|
17
|
+
from cli.commands.admin.credentials.grant.command import (
|
|
18
|
+
admin_credentials_grant_command,
|
|
19
|
+
)
|
|
20
|
+
from cli.commands.agents.create.command import agents_create_command
|
|
21
|
+
from cli.commands.agents.delete.command import agents_delete_command
|
|
22
|
+
from cli.commands.agents.list.command import agents_list_command
|
|
23
|
+
from cli.commands.agents.update.command import agents_update_command
|
|
24
|
+
from cli.commands.auth.login.command import login_command
|
|
25
|
+
from cli.commands.auth.signup.command import signup_command
|
|
26
|
+
from cli.commands.whoami.command import whoami_command
|
|
27
|
+
from cli.commands.agents.get.command import agents_get_command
|
|
28
|
+
from cli.commands.audio.transcribe.command import audio_transcribe_command
|
|
29
|
+
from cli.commands.billing.costs.by_agent.command import billing_costs_by_agent_command
|
|
30
|
+
from cli.commands.billing.costs.by_model.command import billing_costs_by_model_command
|
|
31
|
+
from cli.commands.billing.costs.daily.command import billing_costs_daily_command
|
|
32
|
+
from cli.commands.billing.costs.summary.command import billing_costs_summary_command
|
|
33
|
+
from cli.commands.billing.projects.create.command import billing_projects_create_command
|
|
34
|
+
from cli.commands.billing.projects.get.command import billing_projects_get_command
|
|
35
|
+
from cli.commands.billing.projects.list.command import billing_projects_list_command
|
|
36
|
+
from cli.commands.generate.cancel.command import generate_cancel_command
|
|
37
|
+
from cli.commands.generate.status.command import generate_status_command
|
|
38
|
+
from cli.commands.knowledge.collections.cluster.command import (
|
|
39
|
+
knowledge_collections_cluster_command,
|
|
40
|
+
)
|
|
41
|
+
from cli.commands.knowledge.collections.cluster_status.command import (
|
|
42
|
+
knowledge_collections_cluster_status_command,
|
|
43
|
+
)
|
|
44
|
+
from cli.commands.knowledge.documents.bulk_metadata.command import (
|
|
45
|
+
knowledge_documents_bulk_metadata_command,
|
|
46
|
+
)
|
|
47
|
+
from cli.commands.knowledge.documents.reingest.command import (
|
|
48
|
+
knowledge_documents_reingest_command,
|
|
49
|
+
)
|
|
50
|
+
from cli.commands.knowledge.documents.update.command import (
|
|
51
|
+
knowledge_documents_update_command,
|
|
52
|
+
)
|
|
53
|
+
from cli.commands.knowledge.synthesis.update.command import (
|
|
54
|
+
knowledge_synthesis_update_command,
|
|
55
|
+
)
|
|
56
|
+
from cli.commands.organizations.create.command import organizations_create_command
|
|
57
|
+
from cli.commands.pipelines.create.command import pipelines_create_command
|
|
58
|
+
from cli.commands.pipelines.env_vars.command import pipelines_env_vars_command
|
|
59
|
+
from cli.commands.pipelines.executions.costs.command import (
|
|
60
|
+
pipeline_execution_costs_command,
|
|
61
|
+
)
|
|
62
|
+
from cli.commands.pipelines.executions.costs_by_model.command import (
|
|
63
|
+
pipeline_execution_costs_by_model_command,
|
|
64
|
+
)
|
|
65
|
+
from cli.commands.pipelines.executions.costs_by_step.command import (
|
|
66
|
+
pipeline_execution_costs_by_step_command,
|
|
67
|
+
)
|
|
68
|
+
from cli.commands.pipelines.executions.update.command import (
|
|
69
|
+
pipeline_execution_update_command,
|
|
70
|
+
)
|
|
71
|
+
|
|
72
|
+
from cli.commands.pipelines.schedules.env_vars_command import (
|
|
73
|
+
pipelines_schedules_env_vars_command,
|
|
74
|
+
)
|
|
75
|
+
from cli.commands.pipelines.schedules.create_command import (
|
|
76
|
+
pipelines_schedules_create_command,
|
|
77
|
+
)
|
|
78
|
+
from cli.commands.pipelines.schedules.update_command import (
|
|
79
|
+
pipelines_schedules_update_command,
|
|
80
|
+
)
|
|
81
|
+
from cli.commands.pipelines.schedules.once_command import (
|
|
82
|
+
pipelines_schedules_once_command,
|
|
83
|
+
)
|
|
84
|
+
from cli.commands.schemas.delete.command import schemas_delete_command
|
|
85
|
+
from cli.commands.tags.get.command import tags_get_command
|
|
86
|
+
from cli.commands.tags.update.command import tags_update_command
|
|
87
|
+
from cli.commands.templates.get_by_version.command import (
|
|
88
|
+
templates_get_by_version_command,
|
|
89
|
+
)
|
|
90
|
+
from cli.commands.tools.get.command import tools_get_command
|
|
91
|
+
from cli.commands.tools.list.command import tools_list_command
|
|
92
|
+
from cli.commands.users.create.command import users_create_command
|
|
93
|
+
|
|
94
|
+
from cli.commands.content.edit.command import content_edit_command
|
|
95
|
+
from cli.commands.content.get.command import content_get_command
|
|
96
|
+
from cli.commands.content.list.command import content_list_command
|
|
97
|
+
from cli.commands.credentials.create.command import credentials_create_command
|
|
98
|
+
from cli.commands.credentials.update.command import credentials_update_command
|
|
99
|
+
from cli.commands.generate.text.command import generate_text_command
|
|
100
|
+
from cli.commands.models.list.command import models_list_command
|
|
101
|
+
from cli.commands.schemas.create.command import schemas_create_command
|
|
102
|
+
from cli.commands.schemas.get.command import schemas_get_command
|
|
103
|
+
from cli.commands.schemas.list.command import schemas_list_command
|
|
104
|
+
from cli.commands.sync.command import sync_command
|
|
105
|
+
from cli.commands.admin.bootstrap_command import bootstrap_admin_command
|
|
106
|
+
from cli.commands.templates.create.command import templates_create_command
|
|
107
|
+
from cli.commands.templates.delete.command import templates_delete_command
|
|
108
|
+
from cli.commands.templates.get.command import templates_get_command
|
|
109
|
+
from cli.commands.templates.list.command import templates_list_command
|
|
110
|
+
from cli.commands.templates.render.command import templates_render_command
|
|
111
|
+
from cli.commands.templates.update.command import templates_update_command
|
|
112
|
+
from cli.commands.templates.version.command import templates_version_command
|
|
113
|
+
from cli.commands.content.delete.command import content_delete_command
|
|
114
|
+
from cli.commands.schemas.update.command import schemas_update_command
|
|
115
|
+
from cli.commands.render.html_to_image.command import render_html_to_image_command
|
|
116
|
+
from cli.commands.knowledge.collections.create.command import (
|
|
117
|
+
knowledge_collections_create_command,
|
|
118
|
+
)
|
|
119
|
+
from cli.commands.knowledge.collections.delete.command import (
|
|
120
|
+
knowledge_collections_delete_command,
|
|
121
|
+
)
|
|
122
|
+
from cli.commands.knowledge.collections.get.command import (
|
|
123
|
+
knowledge_collections_get_command,
|
|
124
|
+
)
|
|
125
|
+
from cli.commands.knowledge.collections.list.command import (
|
|
126
|
+
knowledge_collections_list_command,
|
|
127
|
+
)
|
|
128
|
+
from cli.commands.knowledge.collections.update.command import (
|
|
129
|
+
knowledge_collections_update_command,
|
|
130
|
+
)
|
|
131
|
+
from cli.commands.knowledge.documents.delete.command import (
|
|
132
|
+
knowledge_documents_delete_command,
|
|
133
|
+
)
|
|
134
|
+
from cli.commands.knowledge.documents.get.command import (
|
|
135
|
+
knowledge_documents_get_command,
|
|
136
|
+
)
|
|
137
|
+
from cli.commands.knowledge.documents.ingest.command import (
|
|
138
|
+
knowledge_documents_ingest_command,
|
|
139
|
+
)
|
|
140
|
+
from cli.commands.knowledge.documents.list.command import (
|
|
141
|
+
knowledge_documents_list_command,
|
|
142
|
+
)
|
|
143
|
+
from cli.commands.knowledge.recover.command import knowledge_recover_command
|
|
144
|
+
from cli.commands.knowledge.search.command import knowledge_search_command
|
|
145
|
+
from cli.commands.knowledge.synthesis.create.command import (
|
|
146
|
+
knowledge_synthesis_create_command,
|
|
147
|
+
)
|
|
148
|
+
from cli.commands.knowledge.synthesis.delete.command import (
|
|
149
|
+
knowledge_synthesis_delete_command,
|
|
150
|
+
)
|
|
151
|
+
from cli.commands.knowledge.synthesis.get.command import (
|
|
152
|
+
knowledge_synthesis_get_command,
|
|
153
|
+
)
|
|
154
|
+
from cli.commands.knowledge.synthesis.list.command import (
|
|
155
|
+
knowledge_synthesis_list_command,
|
|
156
|
+
)
|
|
157
|
+
from cli.commands.knowledge.synthesis.refresh.command import (
|
|
158
|
+
knowledge_synthesis_refresh_command,
|
|
159
|
+
)
|
|
160
|
+
from cli.commands.tool_configs.create.command import tool_configs_create_command
|
|
161
|
+
from cli.commands.tool_configs.delete.command import tool_configs_delete_command
|
|
162
|
+
from cli.commands.tool_configs.get.command import tool_configs_get_command
|
|
163
|
+
from cli.commands.tool_configs.list.command import tool_configs_list_command
|
|
164
|
+
from cli.commands.tool_configs.update.command import tool_configs_update_command
|
|
165
|
+
from cli.commands.pipelines.list.command import pipelines_list_command
|
|
166
|
+
from cli.commands.pipelines.get.command import pipelines_get_command
|
|
167
|
+
from cli.commands.pipelines.execute.command import pipelines_execute_command
|
|
168
|
+
from cli.commands.pipelines.executions.list_command import (
|
|
169
|
+
pipelines_executions_list_command,
|
|
170
|
+
)
|
|
171
|
+
from cli.commands.pipelines.executions.get_command import (
|
|
172
|
+
pipelines_executions_get_command,
|
|
173
|
+
)
|
|
174
|
+
from cli.commands.pipelines.schedules.list_command import (
|
|
175
|
+
pipelines_schedules_list_command,
|
|
176
|
+
)
|
|
177
|
+
from cli.commands.pipelines.schedules.get_command import pipelines_schedules_get_command
|
|
178
|
+
from cli.commands.pipelines.schedules.delete_command import (
|
|
179
|
+
pipelines_schedules_delete_command,
|
|
180
|
+
)
|
|
181
|
+
from cli.commands.pipelines.costs.command import pipelines_costs_command
|
|
182
|
+
from cli.commands.pipelines.approvals.get_command import (
|
|
183
|
+
pipelines_approvals_get_command,
|
|
184
|
+
)
|
|
185
|
+
from cli.commands.pipelines.approvals.decide_command import (
|
|
186
|
+
pipelines_approvals_decide_command,
|
|
187
|
+
)
|
|
188
|
+
from cli.commands.pipelines.executions.rerun_command import (
|
|
189
|
+
pipelines_executions_rerun_command,
|
|
190
|
+
)
|
|
191
|
+
from cli.commands.pipelines.costs.daily_command import pipeline_costs_daily_command
|
|
192
|
+
from cli.commands.sessions.list.command import sessions_list_command
|
|
193
|
+
from cli.commands.sessions.get.command import sessions_get_command
|
|
194
|
+
from cli.commands.sessions.delete.command import sessions_delete_command
|
|
195
|
+
from cli.commands.sessions.messages.command import sessions_messages_command
|
|
196
|
+
from cli.commands.tags.list.command import tags_list_command
|
|
197
|
+
from cli.commands.tags.create.command import tags_create_command
|
|
198
|
+
from cli.commands.tags.delete.command import tags_delete_command
|
|
199
|
+
from cli.infrastructure.config import load_config, set_global_overrides
|
|
200
|
+
from cli.infrastructure.output import OutputFormat, OutputService
|
|
201
|
+
from alloy_runtime_sdk.logging.config import LogConfig, LogFormat, LogLevel, configure
|
|
202
|
+
from trogon.typer import init_tui
|
|
203
|
+
|
|
204
|
+
console = Console()
|
|
205
|
+
|
|
206
|
+
# Root CLI application
|
|
207
|
+
# Note: no_args_is_help=False and invoke_without_command=True allows
|
|
208
|
+
app = typer.Typer(
|
|
209
|
+
name="alloy",
|
|
210
|
+
help="Alloy Runtime CLI - Unified interface for AI orchestration. Run without arguments to launch TUI.",
|
|
211
|
+
no_args_is_help=False,
|
|
212
|
+
invoke_without_command=True,
|
|
213
|
+
)
|
|
214
|
+
|
|
215
|
+
|
|
216
|
+
@app.callback(invoke_without_command=True)
|
|
217
|
+
def global_options(
|
|
218
|
+
ctx: typer.Context,
|
|
219
|
+
api_url: Optional[str] = typer.Option(
|
|
220
|
+
None,
|
|
221
|
+
"--api-url",
|
|
222
|
+
help="Override API URL",
|
|
223
|
+
envvar="ALLOY_RUNTIME_API_URL",
|
|
224
|
+
),
|
|
225
|
+
api_key: Optional[str] = typer.Option(
|
|
226
|
+
None,
|
|
227
|
+
"--api-key",
|
|
228
|
+
help="Override API key",
|
|
229
|
+
envvar="ALLOY_RUNTIME_API_KEY",
|
|
230
|
+
),
|
|
231
|
+
output_format: str = typer.Option(
|
|
232
|
+
"compact",
|
|
233
|
+
"--format",
|
|
234
|
+
help="Output format: compact, json, lines",
|
|
235
|
+
),
|
|
236
|
+
no_tui: bool = typer.Option(
|
|
237
|
+
False,
|
|
238
|
+
"--no-tui",
|
|
239
|
+
help="Show CLI help instead of TUI",
|
|
240
|
+
),
|
|
241
|
+
) -> None:
|
|
242
|
+
"""Global options for all commands.
|
|
243
|
+
|
|
244
|
+
Run with no arguments to launch TUI, or use --no-tui for CLI help.
|
|
245
|
+
"""
|
|
246
|
+
# Store global overrides for load_config to use
|
|
247
|
+
set_global_overrides(api_url=api_url, api_key=api_key)
|
|
248
|
+
|
|
249
|
+
# Configure output format globally
|
|
250
|
+
format_lower = output_format.lower()
|
|
251
|
+
if format_lower == "json":
|
|
252
|
+
OutputService.configure(OutputFormat.JSON)
|
|
253
|
+
elif format_lower == "lines":
|
|
254
|
+
OutputService.configure(OutputFormat.LINES)
|
|
255
|
+
else:
|
|
256
|
+
# Default: compact (copy-friendly 2-line blocks)
|
|
257
|
+
OutputService.configure(OutputFormat.COMPACT)
|
|
258
|
+
|
|
259
|
+
# If no subcommand is invoked, launch TUI or show help
|
|
260
|
+
if ctx.invoked_subcommand is None:
|
|
261
|
+
if no_tui:
|
|
262
|
+
# Show help instead of launching TUI
|
|
263
|
+
console.print(ctx.get_help())
|
|
264
|
+
raise typer.Exit()
|
|
265
|
+
|
|
266
|
+
# Launch the unified TUI application
|
|
267
|
+
_launch_tui()
|
|
268
|
+
raise typer.Exit()
|
|
269
|
+
|
|
270
|
+
|
|
271
|
+
def _launch_tui() -> None:
|
|
272
|
+
"""Launch the unified Terminal UI application."""
|
|
273
|
+
from cli.tui.app import run_app
|
|
274
|
+
|
|
275
|
+
try:
|
|
276
|
+
config = load_config()
|
|
277
|
+
except Exception as e:
|
|
278
|
+
console.print(f"[red]Configuration error:[/] {e}")
|
|
279
|
+
console.print("\n[dim]Run 'ai2 login' to authenticate first.[/]")
|
|
280
|
+
raise typer.Exit(code=1)
|
|
281
|
+
|
|
282
|
+
if not config.api_key:
|
|
283
|
+
console.print("[red]Not authenticated.[/]")
|
|
284
|
+
console.print("\n[dim]Run 'ai2 login' to authenticate first.[/]")
|
|
285
|
+
raise typer.Exit(code=1)
|
|
286
|
+
|
|
287
|
+
run_app(api_url=config.api_url, api_key=config.api_key)
|
|
288
|
+
|
|
289
|
+
|
|
290
|
+
# Register top-level auth commands for convenience
|
|
291
|
+
app.command("login")(login_command)
|
|
292
|
+
app.command("signup")(signup_command)
|
|
293
|
+
app.command("whoami")(whoami_command)
|
|
294
|
+
|
|
295
|
+
# Credentials command group
|
|
296
|
+
credentials_app = typer.Typer(
|
|
297
|
+
help="Manage AI provider credentials",
|
|
298
|
+
no_args_is_help=True,
|
|
299
|
+
)
|
|
300
|
+
|
|
301
|
+
# Register credentials group with main app
|
|
302
|
+
app.add_typer(credentials_app, name="credentials")
|
|
303
|
+
app.add_typer(credentials_app, name="creds") # Alias
|
|
304
|
+
|
|
305
|
+
# Register credential commands
|
|
306
|
+
credentials_app.command("create")(credentials_create_command)
|
|
307
|
+
credentials_app.command("update")(credentials_update_command)
|
|
308
|
+
|
|
309
|
+
# Sync command group
|
|
310
|
+
sync_app = typer.Typer(
|
|
311
|
+
help="Sync data from external sources",
|
|
312
|
+
no_args_is_help=True,
|
|
313
|
+
)
|
|
314
|
+
|
|
315
|
+
# Register sync group with main app
|
|
316
|
+
app.add_typer(sync_app, name="sync")
|
|
317
|
+
|
|
318
|
+
# Register sync commands
|
|
319
|
+
sync_app.command("models")(sync_command)
|
|
320
|
+
|
|
321
|
+
# Models command group
|
|
322
|
+
models_app = typer.Typer(
|
|
323
|
+
help="List and query AI models",
|
|
324
|
+
no_args_is_help=True,
|
|
325
|
+
)
|
|
326
|
+
|
|
327
|
+
# Register models group with main app
|
|
328
|
+
app.add_typer(models_app, name="models")
|
|
329
|
+
|
|
330
|
+
# Register model commands
|
|
331
|
+
models_app.command("list")(models_list_command)
|
|
332
|
+
|
|
333
|
+
# ========================================
|
|
334
|
+
# Admin group (system administration)
|
|
335
|
+
# ========================================
|
|
336
|
+
admin_app = typer.Typer(
|
|
337
|
+
name="admin",
|
|
338
|
+
help="System administration commands (requires system admin privileges)",
|
|
339
|
+
no_args_is_help=True,
|
|
340
|
+
)
|
|
341
|
+
|
|
342
|
+
# Register admin group with main app
|
|
343
|
+
app.add_typer(admin_app, name="admin")
|
|
344
|
+
|
|
345
|
+
# Register admin commands
|
|
346
|
+
admin_app.command("bootstrap")(bootstrap_admin_command)
|
|
347
|
+
|
|
348
|
+
# Admin credentials subgroup
|
|
349
|
+
admin_credentials_app = typer.Typer(
|
|
350
|
+
help="Manage system credentials",
|
|
351
|
+
no_args_is_help=True,
|
|
352
|
+
)
|
|
353
|
+
|
|
354
|
+
# Register admin credentials subgroup
|
|
355
|
+
admin_app.add_typer(admin_credentials_app, name="credentials")
|
|
356
|
+
admin_app.add_typer(admin_credentials_app, name="creds") # Alias
|
|
357
|
+
|
|
358
|
+
# Register admin credentials commands
|
|
359
|
+
admin_credentials_app.command("create")(admin_credentials_create_command)
|
|
360
|
+
admin_credentials_app.command("grant")(admin_credentials_grant_command)
|
|
361
|
+
|
|
362
|
+
# Agents command group
|
|
363
|
+
agents_app = typer.Typer(
|
|
364
|
+
help="Manage AI agents",
|
|
365
|
+
no_args_is_help=True,
|
|
366
|
+
)
|
|
367
|
+
|
|
368
|
+
# Register agents group with main app
|
|
369
|
+
app.add_typer(agents_app, name="agents")
|
|
370
|
+
|
|
371
|
+
# Register agent commands
|
|
372
|
+
agents_app.command("create")(agents_create_command)
|
|
373
|
+
agents_app.command("delete")(agents_delete_command)
|
|
374
|
+
agents_app.command("list")(agents_list_command)
|
|
375
|
+
agents_app.command("update")(agents_update_command)
|
|
376
|
+
agents_app.command("get")(agents_get_command)
|
|
377
|
+
|
|
378
|
+
# Templates command group
|
|
379
|
+
templates_app = typer.Typer(
|
|
380
|
+
help="Manage templates (system instructions, user messages, fragments)",
|
|
381
|
+
no_args_is_help=True,
|
|
382
|
+
)
|
|
383
|
+
|
|
384
|
+
# Register templates group with main app
|
|
385
|
+
app.add_typer(templates_app, name="templates")
|
|
386
|
+
app.add_typer(templates_app, name="tpl") # Alias
|
|
387
|
+
|
|
388
|
+
# Register template commands
|
|
389
|
+
templates_app.command("create")(templates_create_command)
|
|
390
|
+
templates_app.command("delete")(templates_delete_command)
|
|
391
|
+
templates_app.command("get")(templates_get_command)
|
|
392
|
+
templates_app.command("list")(templates_list_command)
|
|
393
|
+
templates_app.command("render")(templates_render_command)
|
|
394
|
+
templates_app.command("update")(templates_update_command)
|
|
395
|
+
templates_app.command("version")(templates_version_command)
|
|
396
|
+
templates_app.command("get-by-version")(templates_get_by_version_command)
|
|
397
|
+
|
|
398
|
+
# Generate command group
|
|
399
|
+
generate_app = typer.Typer(
|
|
400
|
+
help="Generate AI content (text, images, etc.)",
|
|
401
|
+
no_args_is_help=True,
|
|
402
|
+
)
|
|
403
|
+
|
|
404
|
+
# Register generate group with main app
|
|
405
|
+
app.add_typer(generate_app, name="generate")
|
|
406
|
+
app.add_typer(generate_app, name="gen") # Alias
|
|
407
|
+
|
|
408
|
+
# Register generate commands
|
|
409
|
+
generate_app.command("text")(generate_text_command)
|
|
410
|
+
generate_app.command("status")(generate_status_command)
|
|
411
|
+
generate_app.command("cancel")(generate_cancel_command)
|
|
412
|
+
|
|
413
|
+
# Content command group
|
|
414
|
+
content_app = typer.Typer(
|
|
415
|
+
help="Query and manage AI-generated content parts",
|
|
416
|
+
no_args_is_help=True,
|
|
417
|
+
)
|
|
418
|
+
|
|
419
|
+
# Register content group with main app
|
|
420
|
+
app.add_typer(content_app, name="content")
|
|
421
|
+
|
|
422
|
+
# Register content commands
|
|
423
|
+
content_app.command("list")(content_list_command)
|
|
424
|
+
content_app.command("get")(content_get_command)
|
|
425
|
+
content_app.command("edit")(content_edit_command)
|
|
426
|
+
content_app.command("delete")(content_delete_command)
|
|
427
|
+
|
|
428
|
+
# Schemas command group
|
|
429
|
+
schemas_app = typer.Typer(
|
|
430
|
+
help="Manage input/output validation schemas",
|
|
431
|
+
no_args_is_help=True,
|
|
432
|
+
)
|
|
433
|
+
|
|
434
|
+
# Register schemas group with main app
|
|
435
|
+
app.add_typer(schemas_app, name="schemas")
|
|
436
|
+
|
|
437
|
+
# Register schema commands
|
|
438
|
+
schemas_app.command("create")(schemas_create_command)
|
|
439
|
+
schemas_app.command("get")(schemas_get_command)
|
|
440
|
+
schemas_app.command("list")(schemas_list_command)
|
|
441
|
+
schemas_app.command("update")(schemas_update_command)
|
|
442
|
+
schemas_app.command("delete")(schemas_delete_command)
|
|
443
|
+
|
|
444
|
+
# Render command group
|
|
445
|
+
render_app = typer.Typer(
|
|
446
|
+
help="Render content to various formats (HTML to image, etc.)",
|
|
447
|
+
no_args_is_help=True,
|
|
448
|
+
)
|
|
449
|
+
|
|
450
|
+
# Register render group with main app
|
|
451
|
+
app.add_typer(render_app, name="render")
|
|
452
|
+
|
|
453
|
+
# Register render commands
|
|
454
|
+
render_app.command("image")(render_html_to_image_command)
|
|
455
|
+
|
|
456
|
+
# Knowledge command group
|
|
457
|
+
knowledge_app = typer.Typer(
|
|
458
|
+
help="Manage knowledge collections and documents",
|
|
459
|
+
no_args_is_help=True,
|
|
460
|
+
)
|
|
461
|
+
|
|
462
|
+
# Register knowledge group with main app
|
|
463
|
+
app.add_typer(knowledge_app, name="knowledge")
|
|
464
|
+
app.add_typer(knowledge_app, name="kb") # Alias
|
|
465
|
+
|
|
466
|
+
# Knowledge collections subgroup
|
|
467
|
+
knowledge_collections_app = typer.Typer(
|
|
468
|
+
help="Manage document collections",
|
|
469
|
+
no_args_is_help=True,
|
|
470
|
+
)
|
|
471
|
+
|
|
472
|
+
# Register collections subgroup with knowledge app
|
|
473
|
+
knowledge_app.add_typer(knowledge_collections_app, name="collections")
|
|
474
|
+
|
|
475
|
+
# Register knowledge collection commands
|
|
476
|
+
knowledge_collections_app.command("create")(knowledge_collections_create_command)
|
|
477
|
+
knowledge_collections_app.command("delete")(knowledge_collections_delete_command)
|
|
478
|
+
knowledge_collections_app.command("get")(knowledge_collections_get_command)
|
|
479
|
+
knowledge_collections_app.command("list")(knowledge_collections_list_command)
|
|
480
|
+
knowledge_collections_app.command("update")(knowledge_collections_update_command)
|
|
481
|
+
knowledge_collections_app.command("cluster")(knowledge_collections_cluster_command)
|
|
482
|
+
knowledge_collections_app.command("cluster-status")(
|
|
483
|
+
knowledge_collections_cluster_status_command
|
|
484
|
+
)
|
|
485
|
+
|
|
486
|
+
# Knowledge documents subgroup
|
|
487
|
+
knowledge_documents_app = typer.Typer(
|
|
488
|
+
help="Manage documents in collections",
|
|
489
|
+
no_args_is_help=True,
|
|
490
|
+
)
|
|
491
|
+
|
|
492
|
+
# Register documents subgroup with knowledge app
|
|
493
|
+
knowledge_app.add_typer(knowledge_documents_app, name="documents")
|
|
494
|
+
|
|
495
|
+
# Register knowledge document commands
|
|
496
|
+
knowledge_documents_app.command("delete")(knowledge_documents_delete_command)
|
|
497
|
+
knowledge_documents_app.command("get")(knowledge_documents_get_command)
|
|
498
|
+
knowledge_documents_app.command("ingest")(knowledge_documents_ingest_command)
|
|
499
|
+
knowledge_documents_app.command("list")(knowledge_documents_list_command)
|
|
500
|
+
knowledge_documents_app.command("update")(knowledge_documents_update_command)
|
|
501
|
+
knowledge_documents_app.command("reingest")(knowledge_documents_reingest_command)
|
|
502
|
+
knowledge_documents_app.command("bulk-metadata")(
|
|
503
|
+
knowledge_documents_bulk_metadata_command
|
|
504
|
+
)
|
|
505
|
+
|
|
506
|
+
# Knowledge synthesis subgroup
|
|
507
|
+
knowledge_synthesis_app = typer.Typer(
|
|
508
|
+
help="Manage corpus-level syntheses",
|
|
509
|
+
no_args_is_help=True,
|
|
510
|
+
)
|
|
511
|
+
|
|
512
|
+
# Register synthesis subgroup with knowledge app
|
|
513
|
+
knowledge_app.add_typer(knowledge_synthesis_app, name="synthesis")
|
|
514
|
+
|
|
515
|
+
# Register knowledge synthesis commands
|
|
516
|
+
knowledge_synthesis_app.command("create")(knowledge_synthesis_create_command)
|
|
517
|
+
knowledge_synthesis_app.command("delete")(knowledge_synthesis_delete_command)
|
|
518
|
+
knowledge_synthesis_app.command("get")(knowledge_synthesis_get_command)
|
|
519
|
+
knowledge_synthesis_app.command("list")(knowledge_synthesis_list_command)
|
|
520
|
+
knowledge_synthesis_app.command("refresh")(knowledge_synthesis_refresh_command)
|
|
521
|
+
knowledge_synthesis_app.command("update")(knowledge_synthesis_update_command)
|
|
522
|
+
|
|
523
|
+
# Register top-level knowledge commands
|
|
524
|
+
knowledge_app.command("recover")(knowledge_recover_command)
|
|
525
|
+
knowledge_app.command("search")(knowledge_search_command)
|
|
526
|
+
|
|
527
|
+
# Tool configs command group
|
|
528
|
+
tool_configs_app = typer.Typer(
|
|
529
|
+
help="Manage reusable tool configurations",
|
|
530
|
+
no_args_is_help=True,
|
|
531
|
+
)
|
|
532
|
+
|
|
533
|
+
# Register tool-configs group with main app
|
|
534
|
+
app.add_typer(tool_configs_app, name="tool-configs")
|
|
535
|
+
app.add_typer(tool_configs_app, name="tc") # Alias
|
|
536
|
+
|
|
537
|
+
# Register tool-configs commands
|
|
538
|
+
tool_configs_app.command("create")(tool_configs_create_command)
|
|
539
|
+
tool_configs_app.command("delete")(tool_configs_delete_command)
|
|
540
|
+
tool_configs_app.command("get")(tool_configs_get_command)
|
|
541
|
+
tool_configs_app.command("list")(tool_configs_list_command)
|
|
542
|
+
tool_configs_app.command("update")(tool_configs_update_command)
|
|
543
|
+
|
|
544
|
+
# Pipelines command group
|
|
545
|
+
pipelines_app = typer.Typer(
|
|
546
|
+
help="Manage and execute pipelines",
|
|
547
|
+
no_args_is_help=True,
|
|
548
|
+
)
|
|
549
|
+
|
|
550
|
+
# Register pipelines group with main app
|
|
551
|
+
app.add_typer(pipelines_app, name="pipelines")
|
|
552
|
+
app.add_typer(pipelines_app, name="pipe") # Alias
|
|
553
|
+
|
|
554
|
+
# Register pipeline commands
|
|
555
|
+
pipelines_app.command("list")(pipelines_list_command)
|
|
556
|
+
pipelines_app.command("get")(pipelines_get_command)
|
|
557
|
+
pipelines_app.command("execute")(pipelines_execute_command)
|
|
558
|
+
pipelines_app.command("costs")(pipelines_costs_command)
|
|
559
|
+
pipelines_app.command("costs-daily")(pipeline_costs_daily_command)
|
|
560
|
+
pipelines_app.command("create")(pipelines_create_command)
|
|
561
|
+
pipelines_app.command("env")(pipelines_env_vars_command)
|
|
562
|
+
|
|
563
|
+
# Pipelines executions subgroup
|
|
564
|
+
pipelines_executions_app = typer.Typer(
|
|
565
|
+
help="Manage pipeline executions",
|
|
566
|
+
no_args_is_help=True,
|
|
567
|
+
)
|
|
568
|
+
|
|
569
|
+
# Register executions subgroup with pipelines app
|
|
570
|
+
pipelines_app.add_typer(pipelines_executions_app, name="executions")
|
|
571
|
+
pipelines_app.add_typer(pipelines_executions_app, name="exec") # Alias
|
|
572
|
+
|
|
573
|
+
# Register pipeline execution commands
|
|
574
|
+
pipelines_executions_app.command("list")(pipelines_executions_list_command)
|
|
575
|
+
pipelines_executions_app.command("get")(pipelines_executions_get_command)
|
|
576
|
+
pipelines_executions_app.command("rerun")(pipelines_executions_rerun_command)
|
|
577
|
+
pipelines_executions_app.command("update")(pipeline_execution_update_command)
|
|
578
|
+
pipelines_executions_app.command("costs")(pipeline_execution_costs_command)
|
|
579
|
+
pipelines_executions_app.command("costs-by-model")(
|
|
580
|
+
pipeline_execution_costs_by_model_command
|
|
581
|
+
)
|
|
582
|
+
pipelines_executions_app.command("costs-by-step")(
|
|
583
|
+
pipeline_execution_costs_by_step_command
|
|
584
|
+
)
|
|
585
|
+
|
|
586
|
+
# Pipelines schedules subgroup
|
|
587
|
+
pipelines_schedules_app = typer.Typer(
|
|
588
|
+
help="Manage pipeline schedules",
|
|
589
|
+
no_args_is_help=True,
|
|
590
|
+
)
|
|
591
|
+
|
|
592
|
+
# Register schedules subgroup with pipelines app
|
|
593
|
+
pipelines_app.add_typer(pipelines_schedules_app, name="schedules")
|
|
594
|
+
pipelines_app.add_typer(pipelines_schedules_app, name="sched") # Alias
|
|
595
|
+
|
|
596
|
+
# Register pipeline schedule commands
|
|
597
|
+
pipelines_schedules_app.command("list")(pipelines_schedules_list_command)
|
|
598
|
+
pipelines_schedules_app.command("get")(pipelines_schedules_get_command)
|
|
599
|
+
pipelines_schedules_app.command("delete")(pipelines_schedules_delete_command)
|
|
600
|
+
pipelines_schedules_app.command("env")(pipelines_schedules_env_vars_command)
|
|
601
|
+
pipelines_schedules_app.command("create")(pipelines_schedules_create_command)
|
|
602
|
+
pipelines_schedules_app.command("update")(pipelines_schedules_update_command)
|
|
603
|
+
pipelines_schedules_app.command("once")(pipelines_schedules_once_command)
|
|
604
|
+
|
|
605
|
+
|
|
606
|
+
# Pipelines approvals subgroup
|
|
607
|
+
pipelines_approvals_app = typer.Typer(
|
|
608
|
+
help="Manage approval checkpoints for human-in-the-loop pipelines",
|
|
609
|
+
no_args_is_help=True,
|
|
610
|
+
)
|
|
611
|
+
|
|
612
|
+
# Register approvals subgroup with pipelines app
|
|
613
|
+
pipelines_app.add_typer(pipelines_approvals_app, name="approvals")
|
|
614
|
+
|
|
615
|
+
# Register pipeline approval commands
|
|
616
|
+
pipelines_approvals_app.command("get")(pipelines_approvals_get_command)
|
|
617
|
+
pipelines_approvals_app.command("decide")(pipelines_approvals_decide_command)
|
|
618
|
+
|
|
619
|
+
# Sessions command group
|
|
620
|
+
sessions_app = typer.Typer(
|
|
621
|
+
help="Manage chat sessions",
|
|
622
|
+
no_args_is_help=True,
|
|
623
|
+
)
|
|
624
|
+
|
|
625
|
+
# Register sessions group with main app
|
|
626
|
+
app.add_typer(sessions_app, name="sessions")
|
|
627
|
+
|
|
628
|
+
# Register session commands
|
|
629
|
+
sessions_app.command("list")(sessions_list_command)
|
|
630
|
+
sessions_app.command("get")(sessions_get_command)
|
|
631
|
+
sessions_app.command("delete")(sessions_delete_command)
|
|
632
|
+
sessions_app.command("messages")(sessions_messages_command)
|
|
633
|
+
|
|
634
|
+
# Tags command group
|
|
635
|
+
tags_app = typer.Typer(
|
|
636
|
+
help="Manage tags for organizing content",
|
|
637
|
+
no_args_is_help=True,
|
|
638
|
+
)
|
|
639
|
+
|
|
640
|
+
# Register tags group with main app
|
|
641
|
+
app.add_typer(tags_app, name="tags")
|
|
642
|
+
|
|
643
|
+
# Register tag commands
|
|
644
|
+
tags_app.command("list")(tags_list_command)
|
|
645
|
+
tags_app.command("create")(tags_create_command)
|
|
646
|
+
tags_app.command("delete")(tags_delete_command)
|
|
647
|
+
tags_app.command("get")(tags_get_command)
|
|
648
|
+
tags_app.command("update")(tags_update_command)
|
|
649
|
+
|
|
650
|
+
# Billing command group
|
|
651
|
+
billing_app = typer.Typer(
|
|
652
|
+
help="Manage billing projects and costs",
|
|
653
|
+
no_args_is_help=True,
|
|
654
|
+
)
|
|
655
|
+
|
|
656
|
+
app.add_typer(billing_app, name="billing")
|
|
657
|
+
app.add_typer(billing_app, name="bill") # Alias
|
|
658
|
+
|
|
659
|
+
# Billing projects subgroup
|
|
660
|
+
billing_projects_app = typer.Typer(
|
|
661
|
+
help="Manage billing projects",
|
|
662
|
+
no_args_is_help=True,
|
|
663
|
+
)
|
|
664
|
+
|
|
665
|
+
billing_app.add_typer(billing_projects_app, name="projects")
|
|
666
|
+
|
|
667
|
+
billing_projects_app.command("create")(billing_projects_create_command)
|
|
668
|
+
billing_projects_app.command("list")(billing_projects_list_command)
|
|
669
|
+
billing_projects_app.command("get")(billing_projects_get_command)
|
|
670
|
+
|
|
671
|
+
# Billing costs subgroup
|
|
672
|
+
billing_costs_app = typer.Typer(
|
|
673
|
+
help="View billing costs",
|
|
674
|
+
no_args_is_help=True,
|
|
675
|
+
)
|
|
676
|
+
|
|
677
|
+
billing_app.add_typer(billing_costs_app, name="costs")
|
|
678
|
+
|
|
679
|
+
billing_costs_app.command("summary")(billing_costs_summary_command)
|
|
680
|
+
billing_costs_app.command("daily")(billing_costs_daily_command)
|
|
681
|
+
billing_costs_app.command("by-agent")(billing_costs_by_agent_command)
|
|
682
|
+
billing_costs_app.command("by-model")(billing_costs_by_model_command)
|
|
683
|
+
|
|
684
|
+
# Tools command group
|
|
685
|
+
tools_app = typer.Typer(
|
|
686
|
+
help="List and inspect available tools",
|
|
687
|
+
no_args_is_help=True,
|
|
688
|
+
)
|
|
689
|
+
|
|
690
|
+
app.add_typer(tools_app, name="tools")
|
|
691
|
+
app.add_typer(tools_app, name="tool") # Alias
|
|
692
|
+
|
|
693
|
+
tools_app.command("list")(tools_list_command)
|
|
694
|
+
tools_app.command("get")(tools_get_command)
|
|
695
|
+
|
|
696
|
+
# Audio command group
|
|
697
|
+
audio_app = typer.Typer(
|
|
698
|
+
help="Audio processing commands",
|
|
699
|
+
no_args_is_help=True,
|
|
700
|
+
)
|
|
701
|
+
|
|
702
|
+
app.add_typer(audio_app, name="audio")
|
|
703
|
+
app.add_typer(audio_app, name="aud") # Alias
|
|
704
|
+
|
|
705
|
+
audio_app.command("transcribe")(audio_transcribe_command)
|
|
706
|
+
|
|
707
|
+
# Organizations command group
|
|
708
|
+
organizations_app = typer.Typer(
|
|
709
|
+
help="Manage organizations",
|
|
710
|
+
no_args_is_help=True,
|
|
711
|
+
)
|
|
712
|
+
|
|
713
|
+
app.add_typer(organizations_app, name="organizations")
|
|
714
|
+
app.add_typer(organizations_app, name="org") # Alias
|
|
715
|
+
|
|
716
|
+
organizations_app.command("create")(organizations_create_command)
|
|
717
|
+
|
|
718
|
+
# Users command group
|
|
719
|
+
users_app = typer.Typer(
|
|
720
|
+
help="Manage users",
|
|
721
|
+
no_args_is_help=True,
|
|
722
|
+
)
|
|
723
|
+
|
|
724
|
+
app.add_typer(users_app, name="users")
|
|
725
|
+
app.add_typer(users_app, name="user") # Alias
|
|
726
|
+
|
|
727
|
+
users_app.command("create")(users_create_command)
|
|
728
|
+
|
|
729
|
+
|
|
730
|
+
init_tui(app)
|
|
731
|
+
|
|
732
|
+
|
|
733
|
+
def main() -> None:
|
|
734
|
+
"""CLI entry point."""
|
|
735
|
+
# Configure logging for CLI (logs to file, Rich console for user output)
|
|
736
|
+
log_level_str = os.environ.get("LOG_LEVEL", "warning").lower()
|
|
737
|
+
log_level = LogLevel(log_level_str)
|
|
738
|
+
|
|
739
|
+
# Determine log file path - use root logs directory
|
|
740
|
+
# From cli/main.py -> cli -> packages -> core-service
|
|
741
|
+
project_root = Path(__file__).parent.parent.parent.parent
|
|
742
|
+
log_dir = project_root / "logs"
|
|
743
|
+
log_file = log_dir / "cli.log"
|
|
744
|
+
|
|
745
|
+
configure(
|
|
746
|
+
LogConfig(
|
|
747
|
+
level=log_level,
|
|
748
|
+
format=LogFormat.JSON, # Always JSON for parsability
|
|
749
|
+
service_name="alloy-runtime-cli",
|
|
750
|
+
output_file=str(log_file),
|
|
751
|
+
capture_stdlib_logging=True,
|
|
752
|
+
)
|
|
753
|
+
)
|
|
754
|
+
|
|
755
|
+
app()
|
|
756
|
+
|
|
757
|
+
|
|
758
|
+
if __name__ == "__main__":
|
|
759
|
+
main()
|