mainsequence 3.19.8__tar.gz → 3.19.10__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {mainsequence-3.19.8 → mainsequence-3.19.10}/PKG-INFO +1 -1
- {mainsequence-3.19.8 → mainsequence-3.19.10}/agent_scaffold/skills/a2a_communication/SKILL.md +19 -6
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/cli/api.py +14 -8
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/cli/cli.py +51 -15
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/client/agent_runtime_models.py +69 -13
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/client/models_user.py +6 -1
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence.egg-info/PKG-INFO +1 -1
- {mainsequence-3.19.8 → mainsequence-3.19.10}/pyproject.toml +1 -1
- {mainsequence-3.19.8 → mainsequence-3.19.10}/tests/test_cli.py +59 -22
- {mainsequence-3.19.8 → mainsequence-3.19.10}/LICENSE +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/README.md +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/agent_scaffold/AGENTS.md +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/agent_scaffold/skills/application_surfaces/api_surfaces/SKILL.md +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/agent_scaffold/skills/command_center/adapter_from_api/SKILL.md +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/agent_scaffold/skills/command_center/api_mock_prototyping/SKILL.md +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/agent_scaffold/skills/command_center/app_components/SKILL.md +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/agent_scaffold/skills/command_center/connections/SKILL.md +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/agent_scaffold/skills/command_center/workspace_analysis/SKILL.md +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/agent_scaffold/skills/command_center/workspace_builder/SKILL.md +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/agent_scaffold/skills/command_center/workspace_design/SKILL.md +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/agent_scaffold/skills/dashboards/streamlit/SKILL.md +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/agent_scaffold/skills/data_access/exploration/SKILL.md +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/agent_scaffold/skills/data_publishing/data_nodes/SKILL.md +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/agent_scaffold/skills/data_publishing/simple_tables/SKILL.md +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/agent_scaffold/skills/maintenance/bug_auditor/SKILL.md +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/agent_scaffold/skills/maintenance/local_journal/SKILL.md +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/agent_scaffold/skills/markets_platform/assets_and_translation/SKILL.md +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/agent_scaffold/skills/markets_platform/instruments_and_pricing/SKILL.md +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/agent_scaffold/skills/markets_platform/virtualfundbuilder/SKILL.md +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/agent_scaffold/skills/platform_operations/access_control_and_sharing/SKILL.md +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/agent_scaffold/skills/platform_operations/orchestration_and_releases/SKILL.md +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/agent_scaffold/skills/project_builder/SKILL.md +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/agent_scaffold/skills/project_to_agent/SKILL.md +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/__init__.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/__main__.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/bootstrap.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/cli/__init__.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/cli/browser_auth.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/cli/config.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/cli/docker_utils.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/cli/doctor.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/cli/local_ops.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/cli/model_filters.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/cli/project_status.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/cli/pydantic_cli.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/cli/sdk_utils.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/cli/ssh_utils.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/cli/ui.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/client/__init__.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/client/base.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/client/client.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/client/command_center/__init__.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/client/command_center/app_component.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/client/command_center/connections.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/client/command_center/data_models.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/client/command_center/workspace.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/client/command_center/workspace_snapshot.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/client/data_sources_interfaces/__init__.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/client/data_sources_interfaces/duckdb.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/client/data_sources_interfaces/timescale.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/client/exceptions.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/client/fastapi/__init__.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/client/fastapi/auth.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/client/models_helpers.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/client/models_simple_tables.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/client/models_tdag.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/client/models_vam.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/client/utils.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/compute_validation.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/dashboards/__init__.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/dashboards/streamlit/__init__.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/dashboards/streamlit/assets/config.toml +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/dashboards/streamlit/assets/favicon.png +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/dashboards/streamlit/assets/image_1_base64.txt +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/dashboards/streamlit/assets/image_2_base64.txt +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/dashboards/streamlit/assets/image_3_base64.txt +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/dashboards/streamlit/assets/image_4_base64.txt +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/dashboards/streamlit/assets/image_5_base64.txt +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/dashboards/streamlit/assets/logo.png +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/dashboards/streamlit/components/__init__.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/dashboards/streamlit/components/asset_select.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/dashboards/streamlit/components/date_settings.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/dashboards/streamlit/components/logged_user.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/dashboards/streamlit/core/__init__.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/dashboards/streamlit/core/theme.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/dashboards/streamlit/instruments/__init__.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/dashboards/streamlit/instruments/streamlit_form_factory.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/dashboards/streamlit/pages/__init__.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/dashboards/streamlit/scaffold.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/defaults.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/instrumentation/__init__.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/instrumentation/utils.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/instruments/__init__.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/instruments/data_interface/__init__.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/instruments/data_interface/data_interface.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/instruments/instruments/__init__.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/instruments/instruments/base_instrument.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/instruments/instruments/bond.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/instruments/instruments/callability.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/instruments/instruments/interest_rate_swap.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/instruments/instruments/json_codec.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/instruments/instruments/position.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/instruments/instruments/ql_fields.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/instruments/interest_rates/__init__.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/instruments/interest_rates/etl/__init__.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/instruments/interest_rates/etl/curve_codec.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/instruments/interest_rates/etl/nodes.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/instruments/interest_rates/etl/registry.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/instruments/pricing_models/__init__.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/instruments/pricing_models/bond_pricer.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/instruments/pricing_models/indices.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/instruments/pricing_models/indices_builders.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/instruments/pricing_models/swap_pricer.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/instruments/settings.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/instruments/utils.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/logconf.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/runtime_flags.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/tdag/__init__.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/tdag/__main__.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/tdag/base_persist_managers.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/tdag/config.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/tdag/configuration_models.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/tdag/data_nodes/__init__.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/tdag/data_nodes/build_operations.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/tdag/data_nodes/data_nodes.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/tdag/data_nodes/filters.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/tdag/data_nodes/models.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/tdag/data_nodes/namespacing.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/tdag/data_nodes/persist_managers.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/tdag/data_nodes/run_operations.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/tdag/data_nodes/utils.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/tdag/filters.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/tdag/future_registry.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/tdag/pydantic_metadata.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/tdag/simple_tables/__init__.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/tdag/simple_tables/filters.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/tdag/simple_tables/models.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/tdag/simple_tables/persist_managers.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/tdag/simple_tables/schema.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/tdag/simple_tables/table_nodes.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/tdag/utils.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/virtualfundbuilder/__init__.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/virtualfundbuilder/contrib/__init__.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/virtualfundbuilder/contrib/data_nodes/__init__.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/virtualfundbuilder/contrib/data_nodes/external_weights.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/virtualfundbuilder/contrib/data_nodes/intraday_trend.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/virtualfundbuilder/contrib/data_nodes/market_cap.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/virtualfundbuilder/contrib/data_nodes/mock_signal.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/virtualfundbuilder/contrib/data_nodes/portfolio_replicator.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/virtualfundbuilder/contrib/prices/__init__.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/virtualfundbuilder/contrib/prices/data_nodes.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/virtualfundbuilder/contrib/prices/utils.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/virtualfundbuilder/contrib/rebalance_strategies/__init__.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/virtualfundbuilder/contrib/rebalance_strategies/rebalance_strategies.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/virtualfundbuilder/enums.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/virtualfundbuilder/models.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/virtualfundbuilder/portfolio_nodes.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/virtualfundbuilder/resource_factory/__init__.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/virtualfundbuilder/resource_factory/rebalance_factory.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/virtualfundbuilder/resource_factory/signal_factory.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/virtualfundbuilder/utils.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence.egg-info/SOURCES.txt +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence.egg-info/dependency_links.txt +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence.egg-info/entry_points.txt +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence.egg-info/requires.txt +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence.egg-info/top_level.txt +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/setup.cfg +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/tests/test_auth_precedence.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/tests/test_build_operations_hashing.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/tests/test_cli_browser_auth.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/tests/test_client.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/tests/test_command_center_app_component_models.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/tests/test_command_center_data_models.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/tests/test_command_center_models.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/tests/test_dependency_extras.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/tests/test_filter_normalization.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/tests/test_instruments.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/tests/test_logconf.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/tests/test_logged_user_components.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/tests/test_models_user_request_bound_auth.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/tests/test_pod_project_resolution.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/tests/test_project_batch_jobs_from_file.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/tests/test_run_configuration.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/tests/test_simple_tables_configuration_hashing.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/tests/test_simple_tables_persistence.py +0 -0
- {mainsequence-3.19.8 → mainsequence-3.19.10}/tests/test_workspace_snapshot.py +0 -0
{mainsequence-3.19.8 → mainsequence-3.19.10}/agent_scaffold/skills/a2a_communication/SKILL.md
RENAMED
|
@@ -56,12 +56,24 @@ mainsequence agent search "<discoveryPrompt>" --limit 10 --json
|
|
|
56
56
|
- optional agent hint
|
|
57
57
|
- required response format or output schema if needed
|
|
58
58
|
4. Discover and select the target agent through the discovery flow above.
|
|
59
|
-
5. Start
|
|
59
|
+
5. Start or reuse the delegated backend session for the selected agent:
|
|
60
60
|
|
|
61
61
|
```bash
|
|
62
|
-
mainsequence agent
|
|
62
|
+
mainsequence agent allocate_a2a_target_session <agent_id>
|
|
63
63
|
```
|
|
64
64
|
|
|
65
|
+
5.1 Treat the allocation response as canonical. Persist both:
|
|
66
|
+
- `handle_unique_id`
|
|
67
|
+
- `agent_session_id`
|
|
68
|
+
|
|
69
|
+
5.2 `handle_unique_id` is the stable delegated-conversation reuse key and must be kept.
|
|
70
|
+
- If the delegated conversation is new, call `allocate_a2a_target_session` without a handle.
|
|
71
|
+
- The backend will generate and return a new `handle_unique_id`; persist it immediately.
|
|
72
|
+
- If you retry because of timeout, disconnect, health-check delay, stream restart, or runtime error recovery, call `allocate_a2a_target_session` again with that same `handle_unique_id`.
|
|
73
|
+
- Reusing the same handle tells the backend to return the same delegated `AgentSession` instead of allocating a sibling session for the same work.
|
|
74
|
+
- Do not drop, replace, or regenerate the handle while the delegated conversation is still the same.
|
|
75
|
+
- Allocate a fresh handle only when you intentionally want a new delegated conversation.
|
|
76
|
+
|
|
65
77
|
6. Resolve runtime access for that agent session:
|
|
66
78
|
|
|
67
79
|
```bash
|
|
@@ -110,10 +122,11 @@ the exact CLI and runtime requests below.
|
|
|
110
122
|
3. Parse the JSON output.
|
|
111
123
|
4. Normalize candidates.
|
|
112
124
|
5. Select the preferred candidate.
|
|
113
|
-
6.
|
|
114
|
-
7.
|
|
115
|
-
8.
|
|
116
|
-
9.
|
|
125
|
+
6. Allocate or reuse the delegated backend session for the target agent.
|
|
126
|
+
7. Persist and reuse the returned `handle_unique_id` for the same delegated conversation.
|
|
127
|
+
8. Resolve runtime access.
|
|
128
|
+
9. Poll runtime health.
|
|
129
|
+
10. Send `POST <rpc_url>/api/a2a/chat`.
|
|
117
130
|
|
|
118
131
|
## Role-specific behavior
|
|
119
132
|
|
|
@@ -988,32 +988,38 @@ def delete_agent(
|
|
|
988
988
|
raise ApiError(f"Agent deletion failed: {e}") from e
|
|
989
989
|
|
|
990
990
|
|
|
991
|
-
def
|
|
991
|
+
def allocate_agent_a2a_target_session(
|
|
992
992
|
agent_id: int | str,
|
|
993
993
|
*,
|
|
994
|
+
caller_agent_session_id: int | str,
|
|
995
|
+
handle_unique_id: str | None = None,
|
|
994
996
|
timeout: int | None = None,
|
|
995
997
|
) -> dict[str, Any]:
|
|
996
998
|
"""
|
|
997
|
-
|
|
999
|
+
Allocate or reuse the delegated A2A target session for one agent via SDK client model.
|
|
998
1000
|
"""
|
|
999
1001
|
try:
|
|
1000
|
-
def
|
|
1002
|
+
def _allocate(ClientAgent):
|
|
1001
1003
|
agent = ClientAgent.get(pk=int(agent_id), timeout=timeout)
|
|
1002
|
-
return agent.
|
|
1004
|
+
return agent.allocate_a2a_target_session(
|
|
1005
|
+
caller_agent_session_id=int(caller_agent_session_id),
|
|
1006
|
+
handle_unique_id=handle_unique_id,
|
|
1007
|
+
timeout=timeout,
|
|
1008
|
+
)
|
|
1003
1009
|
|
|
1004
|
-
|
|
1010
|
+
payload = _run_sdk_model_operation(
|
|
1005
1011
|
module_name="mainsequence.client.agent_runtime_models",
|
|
1006
1012
|
class_name="Agent",
|
|
1007
|
-
operation=
|
|
1013
|
+
operation=_allocate,
|
|
1008
1014
|
)
|
|
1009
|
-
return _sdk_object_to_dict(
|
|
1015
|
+
return _sdk_object_to_dict(payload)
|
|
1010
1016
|
except Exception as e:
|
|
1011
1017
|
err_name = type(e).__name__
|
|
1012
1018
|
if err_name == "NotFoundError":
|
|
1013
1019
|
raise ApiError(f"Agent not found: {agent_id}") from e
|
|
1014
1020
|
if isinstance(e, (ApiError, NotLoggedIn)):
|
|
1015
1021
|
raise
|
|
1016
|
-
raise ApiError(f"Agent session
|
|
1022
|
+
raise ApiError(f"Agent A2A target session allocation failed: {e}") from e
|
|
1017
1023
|
|
|
1018
1024
|
|
|
1019
1025
|
def get_agent_latest_session(
|
|
@@ -77,6 +77,7 @@ from .api import (
|
|
|
77
77
|
add_team_user_to_edit,
|
|
78
78
|
add_team_user_to_view,
|
|
79
79
|
add_workspace_labels,
|
|
80
|
+
allocate_agent_a2a_target_session,
|
|
80
81
|
create_agent,
|
|
81
82
|
create_constant,
|
|
82
83
|
create_organization_team,
|
|
@@ -191,7 +192,6 @@ from .api import (
|
|
|
191
192
|
schedule_batch_project_jobs,
|
|
192
193
|
search_projects,
|
|
193
194
|
semantic_search_agents,
|
|
194
|
-
start_agent_new_session,
|
|
195
195
|
sync_project_after_commit,
|
|
196
196
|
update_organization_team,
|
|
197
197
|
update_workspace,
|
|
@@ -3458,6 +3458,16 @@ def _format_agent_session_details(agent_session_payload: dict[str, object]) -> l
|
|
|
3458
3458
|
]
|
|
3459
3459
|
|
|
3460
3460
|
|
|
3461
|
+
def _format_agent_a2a_allocation_preview(allocation_payload: dict[str, object]) -> list[tuple[str, str]]:
|
|
3462
|
+
session_payload = allocation_payload.get("session")
|
|
3463
|
+
return [
|
|
3464
|
+
("Handle Unique ID", str(allocation_payload.get("handle_unique_id") or "-")),
|
|
3465
|
+
("Agent Session ID", str(allocation_payload.get("agent_session_id") or "-")),
|
|
3466
|
+
("Allocation State", str(allocation_payload.get("allocation_state") or "-")),
|
|
3467
|
+
("Session", _format_agent_session_ref_label(session_payload)),
|
|
3468
|
+
]
|
|
3469
|
+
|
|
3470
|
+
|
|
3461
3471
|
def _agent_list_impl(
|
|
3462
3472
|
timeout: int | None,
|
|
3463
3473
|
filter_entries: list[str] | None,
|
|
@@ -3751,25 +3761,35 @@ def _agent_delete_impl(
|
|
|
3751
3761
|
print_kv("Deleted Agent", _format_agent_preview(deleted))
|
|
3752
3762
|
|
|
3753
3763
|
|
|
3754
|
-
def
|
|
3764
|
+
def _agent_allocate_a2a_target_session_impl(
|
|
3755
3765
|
*,
|
|
3756
3766
|
agent_id: int,
|
|
3767
|
+
caller_agent_session_id: int,
|
|
3768
|
+
handle_unique_id: str | None,
|
|
3757
3769
|
timeout: int | None,
|
|
3758
3770
|
) -> None:
|
|
3759
3771
|
_require_login()
|
|
3760
3772
|
|
|
3761
3773
|
try:
|
|
3762
|
-
|
|
3774
|
+
allocation_payload = allocate_agent_a2a_target_session(
|
|
3775
|
+
agent_id,
|
|
3776
|
+
caller_agent_session_id=caller_agent_session_id,
|
|
3777
|
+
handle_unique_id=handle_unique_id,
|
|
3778
|
+
timeout=timeout,
|
|
3779
|
+
)
|
|
3763
3780
|
except ApiError as e:
|
|
3764
|
-
error(f"Agent session
|
|
3781
|
+
error(f"Agent A2A target session allocation failed: {e}")
|
|
3765
3782
|
raise typer.Exit(1) from e
|
|
3766
3783
|
|
|
3767
|
-
if _emit_json(
|
|
3784
|
+
if _emit_json(allocation_payload):
|
|
3768
3785
|
return
|
|
3769
3786
|
|
|
3770
|
-
success(f"Agent session
|
|
3771
|
-
print_kv("
|
|
3772
|
-
|
|
3787
|
+
success(f"Agent A2A target session allocated: agent_id={agent_id}")
|
|
3788
|
+
print_kv("A2A Target Session Allocation", _format_agent_a2a_allocation_preview(allocation_payload))
|
|
3789
|
+
session_payload = allocation_payload.get("session")
|
|
3790
|
+
if isinstance(session_payload, dict):
|
|
3791
|
+
print_kv("Agent Session", _format_agent_session_preview(session_payload))
|
|
3792
|
+
print_kv("Agent Session Details", _format_agent_session_details(session_payload))
|
|
3773
3793
|
|
|
3774
3794
|
|
|
3775
3795
|
def _agent_get_latest_session_impl(
|
|
@@ -5876,24 +5896,40 @@ def agent_delete_cmd(
|
|
|
5876
5896
|
_agent_delete_impl(agent_id=agent_id, timeout=timeout)
|
|
5877
5897
|
|
|
5878
5898
|
|
|
5879
|
-
@agent.command("
|
|
5880
|
-
def
|
|
5899
|
+
@agent.command("allocate_a2a_target_session")
|
|
5900
|
+
def agent_allocate_a2a_target_session_cmd(
|
|
5881
5901
|
agent_id: int = pydantic_argument(AGENT_MODEL_REF, "id", ..., help="Agent ID."),
|
|
5902
|
+
caller_agent_session_id: int = pydantic_argument(
|
|
5903
|
+
AGENT_SESSION_MODEL_REF,
|
|
5904
|
+
"id",
|
|
5905
|
+
...,
|
|
5906
|
+
help="Caller agent session ID.",
|
|
5907
|
+
),
|
|
5908
|
+
handle_unique_id: str | None = typer.Option(
|
|
5909
|
+
None,
|
|
5910
|
+
"--handle-unique-id",
|
|
5911
|
+
help="Optional delegated-session handle to reuse an existing target session on retries.",
|
|
5912
|
+
),
|
|
5882
5913
|
timeout: int | None = typer.Option(None, "--timeout", help="Request timeout in seconds"),
|
|
5883
5914
|
):
|
|
5884
5915
|
"""
|
|
5885
|
-
|
|
5916
|
+
Allocate or reuse the delegated A2A target session for one agent.
|
|
5886
5917
|
|
|
5887
|
-
Uses SDK client `Agent.
|
|
5918
|
+
Uses SDK client `Agent.allocate_a2a_target_session()` as the single source of truth.
|
|
5888
5919
|
|
|
5889
5920
|
Examples
|
|
5890
5921
|
--------
|
|
5891
5922
|
```bash
|
|
5892
|
-
mainsequence agent
|
|
5893
|
-
mainsequence agent
|
|
5923
|
+
mainsequence agent allocate_a2a_target_session 12 801
|
|
5924
|
+
mainsequence agent allocate_a2a_target_session 12 801 --handle-unique-id delegated-handle-1 --timeout 60
|
|
5894
5925
|
```
|
|
5895
5926
|
"""
|
|
5896
|
-
|
|
5927
|
+
_agent_allocate_a2a_target_session_impl(
|
|
5928
|
+
agent_id=agent_id,
|
|
5929
|
+
caller_agent_session_id=caller_agent_session_id,
|
|
5930
|
+
handle_unique_id=handle_unique_id,
|
|
5931
|
+
timeout=timeout,
|
|
5932
|
+
)
|
|
5897
5933
|
|
|
5898
5934
|
|
|
5899
5935
|
@agent.command("get_latest_session")
|
|
@@ -176,30 +176,86 @@ class Agent(ShareableObjectMixin, BaseObjectOrm, BasePydanticModel):
|
|
|
176
176
|
|
|
177
177
|
return [AgentSemanticSearchResult(**item) for item in data]
|
|
178
178
|
|
|
179
|
-
|
|
179
|
+
|
|
180
|
+
|
|
181
|
+
def allocate_a2a_target_session(
|
|
182
|
+
self,
|
|
183
|
+
*,
|
|
184
|
+
caller_agent_session_id: int | AgentSession,
|
|
185
|
+
handle_unique_id: str | None = None,
|
|
186
|
+
timeout=None,
|
|
187
|
+
) -> dict[str, Any]:
|
|
180
188
|
"""
|
|
181
|
-
|
|
189
|
+
Allocate or reuse the delegated target session for this target `Agent`.
|
|
182
190
|
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
191
|
+
Hits:
|
|
192
|
+
POST <detail_url>allocate-a2a-target-session/
|
|
193
|
+
|
|
194
|
+
Request contract:
|
|
195
|
+
- `caller_agent_session_id` is required and identifies the session that is
|
|
196
|
+
delegating work to this target agent.
|
|
197
|
+
- `handle_unique_id` is optional on the first call.
|
|
198
|
+
- when `handle_unique_id` is omitted, the backend creates a delegated
|
|
199
|
+
`AgentSessionHandle`, generates a new `handle_unique_id`, allocates the target
|
|
200
|
+
session, and returns that `handle_unique_id` in the response.
|
|
201
|
+
- when `handle_unique_id` is provided, the backend reuses the same delegated
|
|
202
|
+
handle and therefore the same target session for retries, reconnects, and
|
|
203
|
+
repeated calls for the same delegated conversation.
|
|
204
|
+
|
|
205
|
+
Why this is preferred over `start_new_session()` for A2A communication:
|
|
206
|
+
- `start_new_session()` always creates a brand-new `AgentSession`.
|
|
207
|
+
- A2A communication needs an idempotent control-plane allocation step so that
|
|
208
|
+
transport retries or stream reconnects do not silently create sibling target
|
|
209
|
+
sessions.
|
|
210
|
+
- `allocate_a2a_target_session()` makes the delegated conversation reusable by
|
|
211
|
+
returning a stable `handle_unique_id` that the caller can keep and send again.
|
|
212
|
+
|
|
213
|
+
Response contract:
|
|
214
|
+
- `handle_unique_id`: stable delegated-session reuse key.
|
|
215
|
+
- `agent_session_id`: allocated target session primary key.
|
|
216
|
+
- `allocation_state`: `created_new` or `reused_existing`.
|
|
217
|
+
- `session`: full canonical backend `AgentSession` payload for the target side.
|
|
218
|
+
|
|
219
|
+
Typical usage:
|
|
220
|
+
1. first call: send only `caller_agent_session_id`
|
|
221
|
+
2. persist the returned `handle_unique_id`
|
|
222
|
+
3. later retries for the same delegated task: resend that `handle_unique_id`
|
|
223
|
+
4. intentionally fresh delegated conversation: omit the old handle and let the
|
|
224
|
+
backend allocate a new one
|
|
187
225
|
"""
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
226
|
+
if isinstance(caller_agent_session_id, AgentSession):
|
|
227
|
+
resolved_caller_session_id = getattr(caller_agent_session_id, 'id', None)
|
|
228
|
+
else:
|
|
229
|
+
resolved_caller_session_id = caller_agent_session_id
|
|
230
|
+
|
|
231
|
+
if resolved_caller_session_id is None:
|
|
232
|
+
raise ValueError(
|
|
233
|
+
'caller_agent_session_id must be an AgentSession or a session id'
|
|
234
|
+
)
|
|
235
|
+
|
|
236
|
+
resolved_handle_unique_id = str(handle_unique_id or '').strip()
|
|
237
|
+
|
|
238
|
+
body = {
|
|
239
|
+
'caller_agent_session_id': int(resolved_caller_session_id),
|
|
240
|
+
}
|
|
241
|
+
if resolved_handle_unique_id:
|
|
242
|
+
body['handle_unique_id'] = resolved_handle_unique_id
|
|
243
|
+
|
|
244
|
+
url = f"{self.get_detail_url()}allocate-a2a-target-session/"
|
|
245
|
+
payload = {
|
|
246
|
+
'json': serialize_to_json(body)
|
|
247
|
+
}
|
|
192
248
|
response = make_request(
|
|
193
249
|
s=self.build_session(),
|
|
194
250
|
loaders=self.LOADERS,
|
|
195
|
-
r_type=
|
|
251
|
+
r_type='POST',
|
|
196
252
|
url=url,
|
|
197
253
|
payload=payload,
|
|
198
254
|
time_out=timeout,
|
|
199
255
|
)
|
|
200
|
-
if response.status_code
|
|
256
|
+
if response.status_code not in (200, 201):
|
|
201
257
|
raise_for_response(response, payload=payload)
|
|
202
|
-
return
|
|
258
|
+
return response.json()
|
|
203
259
|
|
|
204
260
|
def get_latest_session(self, timeout=None):
|
|
205
261
|
"""
|
|
@@ -863,7 +863,12 @@ class User(UserApiBaseObjectOrm, BasePydanticModel):
|
|
|
863
863
|
description="Unique identifier of the user.",
|
|
864
864
|
examples=[42],
|
|
865
865
|
)
|
|
866
|
-
profile_picture:
|
|
866
|
+
profile_picture: str | None = Field(
|
|
867
|
+
None,
|
|
868
|
+
title="Profile Picture URL",
|
|
869
|
+
description="Absolute or relative URL of the user's profile picture when one is set.",
|
|
870
|
+
examples=["https://api.example.com/media/user_profile_pictures/avatar.png"],
|
|
871
|
+
)
|
|
867
872
|
is_verified: bool | None = Field(
|
|
868
873
|
None,
|
|
869
874
|
title="Is Verified",
|
|
@@ -1468,7 +1468,7 @@ def test_get_or_create_agent_uses_client_model(cli_mod, monkeypatch):
|
|
|
1468
1468
|
assert out["id"] == 12
|
|
1469
1469
|
|
|
1470
1470
|
|
|
1471
|
-
def
|
|
1471
|
+
def test_allocate_agent_a2a_target_session_uses_client_model(cli_mod, monkeypatch):
|
|
1472
1472
|
api_mod = importlib.import_module("mainsequence.cli.api")
|
|
1473
1473
|
captured = {}
|
|
1474
1474
|
|
|
@@ -1495,9 +1495,22 @@ def test_start_agent_new_session_uses_client_model(cli_mod, monkeypatch):
|
|
|
1495
1495
|
captured["timeout"] = timeout
|
|
1496
1496
|
|
|
1497
1497
|
class _Agent:
|
|
1498
|
-
def
|
|
1499
|
-
|
|
1500
|
-
|
|
1498
|
+
def allocate_a2a_target_session(
|
|
1499
|
+
self,
|
|
1500
|
+
*,
|
|
1501
|
+
caller_agent_session_id,
|
|
1502
|
+
handle_unique_id=None,
|
|
1503
|
+
timeout=None,
|
|
1504
|
+
):
|
|
1505
|
+
captured["caller_agent_session_id"] = caller_agent_session_id
|
|
1506
|
+
captured["handle_unique_id"] = handle_unique_id
|
|
1507
|
+
captured["allocate_timeout"] = timeout
|
|
1508
|
+
return {
|
|
1509
|
+
"handle_unique_id": "delegated-handle-1",
|
|
1510
|
+
"agent_session_id": 801,
|
|
1511
|
+
"allocation_state": "created_new",
|
|
1512
|
+
"session": FakeAgentSession().model_dump(),
|
|
1513
|
+
}
|
|
1501
1514
|
|
|
1502
1515
|
return _Agent()
|
|
1503
1516
|
|
|
@@ -1505,15 +1518,24 @@ def test_start_agent_new_session_uses_client_model(cli_mod, monkeypatch):
|
|
|
1505
1518
|
|
|
1506
1519
|
monkeypatch.setattr(api_mod, "_run_sdk_model_operation", _run_sdk_model_operation)
|
|
1507
1520
|
|
|
1508
|
-
out = api_mod.
|
|
1521
|
+
out = api_mod.allocate_agent_a2a_target_session(
|
|
1522
|
+
12,
|
|
1523
|
+
caller_agent_session_id=700,
|
|
1524
|
+
handle_unique_id="delegated-handle-1",
|
|
1525
|
+
timeout=16,
|
|
1526
|
+
)
|
|
1509
1527
|
assert captured == {
|
|
1510
1528
|
"module_name": "mainsequence.client.agent_runtime_models",
|
|
1511
1529
|
"class_name": "Agent",
|
|
1512
1530
|
"pk": 12,
|
|
1513
1531
|
"timeout": 16,
|
|
1514
|
-
"
|
|
1532
|
+
"caller_agent_session_id": 700,
|
|
1533
|
+
"handle_unique_id": "delegated-handle-1",
|
|
1534
|
+
"allocate_timeout": 16,
|
|
1515
1535
|
}
|
|
1516
|
-
assert out["
|
|
1536
|
+
assert out["agent_session_id"] == 801
|
|
1537
|
+
assert out["allocation_state"] == "created_new"
|
|
1538
|
+
assert out["handle_unique_id"] == "delegated-handle-1"
|
|
1517
1539
|
|
|
1518
1540
|
|
|
1519
1541
|
def test_get_agent_latest_session_uses_client_model(cli_mod, monkeypatch):
|
|
@@ -6614,28 +6636,43 @@ def test_agent_get_or_create_parses_json_fields(cli_mod, runner, monkeypatch):
|
|
|
6614
6636
|
assert "Agent resolved via get_or_create: Research Copilot" in result.output
|
|
6615
6637
|
|
|
6616
6638
|
|
|
6617
|
-
def
|
|
6639
|
+
def test_agent_allocate_a2a_target_session(cli_mod, runner, monkeypatch):
|
|
6618
6640
|
monkeypatch.setattr(cli_mod, "_require_login", lambda: {"username": "u"})
|
|
6619
6641
|
monkeypatch.setattr(
|
|
6620
6642
|
cli_mod,
|
|
6621
|
-
"
|
|
6622
|
-
lambda agent_id, timeout=None: {
|
|
6623
|
-
"
|
|
6624
|
-
"
|
|
6625
|
-
"
|
|
6626
|
-
"
|
|
6627
|
-
|
|
6628
|
-
|
|
6629
|
-
|
|
6630
|
-
|
|
6631
|
-
|
|
6632
|
-
|
|
6643
|
+
"allocate_agent_a2a_target_session",
|
|
6644
|
+
lambda agent_id, caller_agent_session_id, handle_unique_id=None, timeout=None: {
|
|
6645
|
+
"handle_unique_id": handle_unique_id or "delegated-handle-1",
|
|
6646
|
+
"agent_session_id": 801,
|
|
6647
|
+
"allocation_state": "created_new",
|
|
6648
|
+
"session": {
|
|
6649
|
+
"id": 801,
|
|
6650
|
+
"agent": {"id": agent_id, "name": "Research Copilot"},
|
|
6651
|
+
"status": "pending",
|
|
6652
|
+
"started_at": "2026-04-11T09:15:00Z",
|
|
6653
|
+
"llm_provider": "openai",
|
|
6654
|
+
"llm_model": "gpt-5.4",
|
|
6655
|
+
"engine_name": "codex",
|
|
6656
|
+
"thread_id": "thread-123",
|
|
6657
|
+
"runtime_config_snapshot": {"temperature": 0},
|
|
6658
|
+
"session_metadata": {
|
|
6659
|
+
"origin": "cli",
|
|
6660
|
+
"caller_agent_session_id": caller_agent_session_id,
|
|
6661
|
+
"handle_unique_id": handle_unique_id or "delegated-handle-1",
|
|
6662
|
+
},
|
|
6663
|
+
},
|
|
6633
6664
|
},
|
|
6634
6665
|
)
|
|
6635
6666
|
|
|
6636
|
-
result = runner.invoke(
|
|
6667
|
+
result = runner.invoke(
|
|
6668
|
+
cli_mod.app,
|
|
6669
|
+
["agent", "allocate_a2a_target_session", "12", "700"],
|
|
6670
|
+
)
|
|
6637
6671
|
assert result.exit_code == 0
|
|
6638
|
-
assert "Agent session
|
|
6672
|
+
assert "Agent A2A target session allocated: agent_id=12" in result.output
|
|
6673
|
+
assert "A2A Target Session Allocation" in result.output
|
|
6674
|
+
assert "delegated-handle-1" in result.output
|
|
6675
|
+
assert "created_new" in result.output
|
|
6639
6676
|
assert "Agent Session Details" in result.output
|
|
6640
6677
|
assert "thread-123" in result.output
|
|
6641
6678
|
assert "temperature" in result.output
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mainsequence-3.19.8 → mainsequence-3.19.10}/agent_scaffold/skills/dashboards/streamlit/SKILL.md
RENAMED
|
File without changes
|
{mainsequence-3.19.8 → mainsequence-3.19.10}/agent_scaffold/skills/data_access/exploration/SKILL.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mainsequence-3.19.8 → mainsequence-3.19.10}/agent_scaffold/skills/maintenance/bug_auditor/SKILL.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mainsequence-3.19.8 → mainsequence-3.19.10}/agent_scaffold/skills/project_to_agent/SKILL.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/client/command_center/app_component.py
RENAMED
|
File without changes
|
{mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/client/command_center/connections.py
RENAMED
|
File without changes
|
{mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/client/command_center/data_models.py
RENAMED
|
File without changes
|
{mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/client/command_center/workspace.py
RENAMED
|
File without changes
|
|
File without changes
|
{mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/client/data_sources_interfaces/__init__.py
RENAMED
|
File without changes
|
{mainsequence-3.19.8 → mainsequence-3.19.10}/mainsequence/client/data_sources_interfaces/duckdb.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|