mammoth-cli 2.4.1__tar.gz → 2.4.2__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.
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/PKG-INFO +1 -1
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/__init__.py +1 -1
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/SKILL.md +1 -1
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/view/aggregate.py +15 -5
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/runtime/trace.py +1 -1
- mammoth_cli-2.4.2/mammoth_cli/services/medians.py +145 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/pyproject.toml +1 -1
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/spec/manifests/commands/view.yaml +2 -1
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/spec/manifests/compiled/commands.json +1 -1
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/.gitignore +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/LICENSE +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/README.md +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/__main__.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/app/__init__.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/app/help_text.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/app/options.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/app/tree.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/app/usage.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/about-mammoth.md +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/auth.md +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/capabilities-misc.md +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/capabilities.md +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/command-index.md +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/activity.md +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/addon.md +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/agent.md +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/ai.md +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/annotation.md +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/auth.md +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/automation.md +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/batch.md +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/billing.md +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/browse.md +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/calc.md +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/capabilities.md +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/capability.md +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/client-app.md +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/collection.md +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/completion.md +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/config.md +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/connector.md +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/context.md +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dashboard-embed.md +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dashboard-published.md +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dashboard-qa.md +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dashboard-style.md +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dashboard-template.md +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dashboard.md +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dataset.md +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/doctor.md +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/external-key.md +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/file.md +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/folder.md +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/history.md +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/how.md +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/job.md +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/link.md +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/log.md +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/notification.md +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/parameter.md +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/project.md +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/recipe.md +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/report.md +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/resolve.md +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/run.md +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/schedule.md +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/schema.md +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/skill.md +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/snippet.md +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/support.md +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/template.md +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/token.md +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/trash.md +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/upgrade.md +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/user.md +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/version.md +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/view-transform.md +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/view.md +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/webhook.md +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/workflow.md +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/workspace.md +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/handoff.md +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/input.md +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/jobs-drafts.md +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/machine-output.md +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/operations.md +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/auth-scope.md +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/cleanup.md +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/dashboards.md +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/database-import.md +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/end-to-end.md +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/exports.md +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/file-import.md +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/index.md +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/need-action.md +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/resources.md +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/rest-api-import.md +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/scheduling.md +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/transforms.md +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/typed-etl-discovery.md +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/recovery.md +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/report-checklist.md +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/retention.md +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/safety.md +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/task-start.md +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/__init__.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/_lazy.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/activity.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/addon.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/agent.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/ai.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/annotation.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/auth.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/automation.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/automation_datasets.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/batch.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/billing.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/browse.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/calc.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/capabilities.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/capability.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/client_app.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/completion.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/config.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/connector.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/context.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/dashboard/__init__.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/dashboard/_common.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/dashboard/generated.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/dashboard/workbook.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/dataset/__init__.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/dataset/_common.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/dataset/create.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/dataset/download.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/dataset/find.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/doctor.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/external_key.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/file.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/folder.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/help_summaries.json +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/history.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/how.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/job.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/link.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/notification.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/parameter.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/project.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/recipe.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/registry.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/report.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/resolve.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/run.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/schedule.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/schema/__init__.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/schema/examples.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/schema/find.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/skill.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/snippet.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/support.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/support_template.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/template.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/trash.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/upgrade.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/user.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/view/__init__.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/view/_common.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/view/checks.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/view/column_checks.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/view/columns.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/view/data_read.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/view/derivatives.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/view/explore.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/view/export.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/view/export_dataset.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/view/export_specialized.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/view/export_update.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/view/formatting.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/view/join_check.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/view/lifecycle.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/view/listing.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/view/pipeline.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/view/settle.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/view/upload.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/view_drivers.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/view_explore.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/view_forecast.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/view_ops/__init__.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/view_ops/batch.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/view_ops/crud.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/view_ops/draft.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/view_ops/transforms.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/view_profile.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/webhook.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/workflow.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/commands/workspace.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/context/__init__.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/context/credentials.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/context/endpoint.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/context/keyring_backend.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/context/oauth.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/context/oauth_loopback.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/context/profiles.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/context/resolver.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/contracts/__init__.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/contracts/auth.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/discovery/__init__.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/discovery/limitations.json +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/discovery/next_commands.json +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/discovery/purposes.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/discovery/recipes.json +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/embed.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/errors/__init__.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/errors/envelope.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/manifest/__init__.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/manifest/loader.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/messages/__init__.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/output/__init__.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/output/emit.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/output/envelope.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/output/normalize.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/output/policy.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/output/progress.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/output/render.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/py.typed +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/runtime/__init__.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/runtime/bindings.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/runtime/compact.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/runtime/confirm.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/runtime/dataset_health.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/runtime/dispatch.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/runtime/dryrun.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/runtime/dryrun_targets.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/runtime/embed_pool.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/runtime/embed_scope.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/runtime/embedded.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/runtime/etag_store.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/runtime/executor.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/runtime/idempotency_servers.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/runtime/input_loader.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/runtime/intent_only.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/runtime/invocation.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/runtime/journal.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/runtime/labels.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/runtime/leaf.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/runtime/linecapture.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/runtime/local_paths.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/runtime/locked_files.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/runtime/new_data.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/runtime/next_commands.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/runtime/opens.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/runtime/options.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/runtime/parents.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/runtime/resource_ids.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/runtime/reveal.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/runtime/runlog.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/runtime/session.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/runtime/shared.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/runtime/state.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/runtime/strict.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/runtime/switches.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/runtime/token_scope.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/runtime/updates.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/runtime/validate.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/runtime/verify.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/runtime/view_dataset_cache.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/services/__init__.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/services/append_blank_columns.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/services/argspec.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/services/board_values.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/services/coerce.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/services/column_type_guard.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/services/command_contract.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/services/conditional_format.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/services/conditions.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/services/dashboard_figures.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/services/dashboard_filters.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/services/dashboard_pages.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/services/dashboard_review.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/services/data_profile.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/services/data_quality.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/services/delete_check.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/services/dispatch.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/services/draft_report.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/services/explore_card_edit.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/services/explore_cards.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/services/explore_to_figure.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/services/explore_to_image.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/services/factory.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/services/field_enums.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/services/folder_ids.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/services/held_change.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/services/input_fields.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/services/job_outcome.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/services/listing.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/services/local_files.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/services/local_time.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/services/mapping.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/services/openapi_types.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/services/paging.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/services/period_analysis.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/services/poll.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/services/positional_overrides.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/services/positional_spec.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/services/positionals.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/services/protocol.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/services/read_memo.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/services/read_queries.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/services/schedule_dates.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/services/schema_diff.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/services/sdk_service.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/services/secret_files.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/services/sql_check.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/services/stored_stats.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/services/suggest.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/services/testing.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/services/text_dates.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/services/type_system.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/services/update_method.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/services/view_analysis.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/services/view_variants.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/services/write_impact.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/skills/__init__.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/skills/installer.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/skills/steering.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/testing.py +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/spec/manifests/commands/activity.yaml +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/spec/manifests/commands/addon.yaml +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/spec/manifests/commands/agent.yaml +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/spec/manifests/commands/ai.yaml +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/spec/manifests/commands/annotation.yaml +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/spec/manifests/commands/auth.yaml +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/spec/manifests/commands/automation.yaml +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/spec/manifests/commands/batch.yaml +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/spec/manifests/commands/billing.yaml +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/spec/manifests/commands/browse.yaml +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/spec/manifests/commands/calc.yaml +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/spec/manifests/commands/capabilities.yaml +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/spec/manifests/commands/capability.yaml +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/spec/manifests/commands/client-app.yaml +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/spec/manifests/commands/collection.yaml +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/spec/manifests/commands/completion.yaml +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/spec/manifests/commands/config.yaml +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/spec/manifests/commands/connector.yaml +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/spec/manifests/commands/context.yaml +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/spec/manifests/commands/dashboard.yaml +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/spec/manifests/commands/dataset.yaml +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/spec/manifests/commands/doctor.yaml +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/spec/manifests/commands/external-key.yaml +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/spec/manifests/commands/file.yaml +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/spec/manifests/commands/folder.yaml +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/spec/manifests/commands/history.yaml +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/spec/manifests/commands/how.yaml +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/spec/manifests/commands/job.yaml +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/spec/manifests/commands/link.yaml +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/spec/manifests/commands/log.yaml +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/spec/manifests/commands/notification.yaml +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/spec/manifests/commands/parameter.yaml +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/spec/manifests/commands/project.yaml +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/spec/manifests/commands/recipe.yaml +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/spec/manifests/commands/report.yaml +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/spec/manifests/commands/resolve.yaml +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/spec/manifests/commands/run.yaml +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/spec/manifests/commands/schedule.yaml +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/spec/manifests/commands/schema.yaml +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/spec/manifests/commands/skill.yaml +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/spec/manifests/commands/snippet.yaml +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/spec/manifests/commands/support.yaml +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/spec/manifests/commands/template.yaml +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/spec/manifests/commands/token.yaml +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/spec/manifests/commands/trash.yaml +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/spec/manifests/commands/upgrade.yaml +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/spec/manifests/commands/user.yaml +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/spec/manifests/commands/version.yaml +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/spec/manifests/commands/webhook.yaml +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/spec/manifests/commands/workflow.yaml +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/spec/manifests/commands/workspace.yaml +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/spec/manifests/commands.generated.yaml +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/spec/manifests/compiled/openapi-operations.json +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/spec/manifests/compiled/output-schemas.json +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/spec/manifests/compiled/sdk-methods.json +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/spec/manifests/edits-target.source.yaml +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/spec/manifests/openapi-operations.yaml +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/spec/manifests/output-schemas.yaml +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/spec/manifests/schema-v1.json +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/spec/manifests/sdk-catalog.source.yaml +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/spec/manifests/sdk-methods.yaml +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/spec/manifests/server-status.json +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/spec/openapi/metadata.json +0 -0
- {mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/spec/openapi/openapi.json +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: mammoth-cli
|
|
3
|
-
version: 2.4.
|
|
3
|
+
version: 2.4.2
|
|
4
4
|
description: "Use Mammoth Analytics from a terminal: install or authenticate the CLI, discover its live command contract, and safely manage projects, data, views, pipelines (join, merge, pivot, filter, clean), dashboards, exports, and handoffs."
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -35,7 +35,7 @@ from mammoth_cli.runtime.session import (
|
|
|
35
35
|
open_service,
|
|
36
36
|
require_project,
|
|
37
37
|
)
|
|
38
|
-
from mammoth_cli.services import read_queries
|
|
38
|
+
from mammoth_cli.services import medians, read_queries
|
|
39
39
|
from mammoth_cli.services.conditions import CONDITION_KWARG, compile_condition
|
|
40
40
|
from mammoth_cli.services.read_queries import ReadContext
|
|
41
41
|
|
|
@@ -198,6 +198,10 @@ def _run_aggregate(
|
|
|
198
198
|
)
|
|
199
199
|
kwargs[CONDITION_KWARG] = condition
|
|
200
200
|
_forward_optional(document, kwargs, ("sequence",))
|
|
201
|
+
if medians.requested(document):
|
|
202
|
+
result = medians.aggregate(reads, fields, condition)
|
|
203
|
+
rows = read_queries.sort_locally(result["data"], sort)
|
|
204
|
+
return {**result, "data": rows[:limit] if limit else rows}
|
|
201
205
|
if levels:
|
|
202
206
|
response = read_queries.pivot_with_text_dates(
|
|
203
207
|
reads,
|
|
@@ -222,7 +226,9 @@ def view_data_aggregate(invocation: Invocation) -> HandlerResult:
|
|
|
222
226
|
Read-only: computes and returns the aggregated result without adding a
|
|
223
227
|
task to the view's pipeline or otherwise changing it. Pass exactly one of
|
|
224
228
|
``aggregations`` (a PIVOT; ``group_by`` is optional) or ``metric`` (a
|
|
225
|
-
METRIC). ``function`` is one of SUM, COUNT, AVG, MIN, MAX, STDDEV, DISTINCT_COUNT.
|
|
229
|
+
METRIC). ``function`` is one of SUM, COUNT, AVG, MIN, MAX, STDDEV, DISTINCT_COUNT, MEDIAN.
|
|
230
|
+
MEDIAN is exact, over a NUMERIC column's non-blank values (``median_note`` says how many
|
|
231
|
+
blank rows it left out), and goes in a read of its own. An optional
|
|
226
232
|
``condition`` filters rows before aggregating, and ``sequence`` pins the
|
|
227
233
|
read to a pipeline step (default: latest). ``order_by`` (result labels,
|
|
228
234
|
``"Total desc"``) with ``top`` ranks the groups on the backend (and adds
|
|
@@ -308,9 +314,13 @@ def aggregate_on(
|
|
|
308
314
|
reads = source.reads
|
|
309
315
|
column_types = reads.column_types
|
|
310
316
|
display_to_internal = reads.display_to_internal
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
317
|
+
pivot = "aggregations" in document or "group_by" in document
|
|
318
|
+
levels: dict[int, str] = (
|
|
319
|
+
read_queries.text_date_group_levels(document.get("group_by"), column_types) if pivot else {}
|
|
320
|
+
)
|
|
321
|
+
if medians.requested(document):
|
|
322
|
+
medians.check(document, column_types, bool(levels))
|
|
323
|
+
if pivot:
|
|
314
324
|
fields, as_map = _build_pivot_fields(
|
|
315
325
|
_plain_text_date_groups(document, levels, column_types), display_to_internal
|
|
316
326
|
)
|
|
@@ -5,7 +5,7 @@ The server already logs every request it serves, with its path, status, latency,
|
|
|
5
5
|
``mammoth-cli/<version>``; this module adds a comment naming the command, so the log can
|
|
6
6
|
answer which commands run, from which surface, by which agent, and how they end:
|
|
7
7
|
|
|
8
|
-
mammoth-cli/2.4.
|
|
8
|
+
mammoth-cli/2.4.2 (cmd=view.data.get; inv=3f9c2a1b7d4e; surface=run; agent=claude-code)
|
|
9
9
|
|
|
10
10
|
``inv`` is the invocation id: every request one command makes carries the same one, and the
|
|
11
11
|
local run log (:mod:`mammoth_cli.runtime.runlog`) records it as its ``run_id``, so a local
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
"""MEDIAN for ``view data aggregate``, computed exactly in the CLI.
|
|
2
|
+
|
|
3
|
+
The backend's volatile aggregate has no MEDIAN. Paging sorted rows to find the
|
|
4
|
+
middle one is slow and goes wrong on blanks, which sort last but still count. So
|
|
5
|
+
the CLI asks for one COUNT per stored value of the column (per group), drops the
|
|
6
|
+
blank values, and takes the middle of what is left. The result says how many
|
|
7
|
+
blank rows were skipped.
|
|
8
|
+
"""
|
|
9
|
+
|
|
10
|
+
from __future__ import annotations
|
|
11
|
+
|
|
12
|
+
from collections import defaultdict
|
|
13
|
+
from typing import Any
|
|
14
|
+
|
|
15
|
+
from mammoth_cli.errors.envelope import CODE_INVALID_ARGUMENTS, EXIT_USAGE, CliError
|
|
16
|
+
from mammoth_cli.services.conditions import CONDITION_KWARG
|
|
17
|
+
from mammoth_cli.services.read_queries import ReadContext
|
|
18
|
+
|
|
19
|
+
MEDIAN = "MEDIAN"
|
|
20
|
+
#: The backend returns at most this many grouped rows.
|
|
21
|
+
BACKEND_ROW_CAP = 40000
|
|
22
|
+
|
|
23
|
+
|
|
24
|
+
def _fail(message: str, hint: str = "") -> CliError:
|
|
25
|
+
return CliError(code=CODE_INVALID_ARGUMENTS, message=message, exit_status=EXIT_USAGE, hint=hint)
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
def _items(document: dict[str, Any]) -> list[dict[str, Any]]:
|
|
29
|
+
if isinstance(document.get("metric"), dict):
|
|
30
|
+
return [document["metric"]]
|
|
31
|
+
aggregations = document.get("aggregations")
|
|
32
|
+
return (
|
|
33
|
+
[a for a in aggregations if isinstance(a, dict)] if isinstance(aggregations, list) else []
|
|
34
|
+
)
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
def requested(document: dict[str, Any]) -> bool:
|
|
38
|
+
"""Whether the read asks for a MEDIAN."""
|
|
39
|
+
return any(str(item.get("function") or "").upper() == MEDIAN for item in _items(document))
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
def check(document: dict[str, Any], column_types: dict[str, str], text_date_groups: bool) -> None:
|
|
43
|
+
"""Refuse a MEDIAN read this path cannot answer exactly, before any query."""
|
|
44
|
+
items = _items(document)
|
|
45
|
+
if any(str(item.get("function") or "").upper() != MEDIAN for item in items):
|
|
46
|
+
raise _fail(
|
|
47
|
+
"MEDIAN cannot be mixed with other functions in one read.",
|
|
48
|
+
"Run the MEDIAN aggregations in their own 'view data aggregate' call.",
|
|
49
|
+
)
|
|
50
|
+
if text_date_groups:
|
|
51
|
+
raise _fail(
|
|
52
|
+
"MEDIAN cannot be grouped by a date 'part', or by a 'truncate' of a TEXT date.",
|
|
53
|
+
"Group by a DATE column with 'truncate', or convert the TEXT date with "
|
|
54
|
+
"'view transform convert-type'.",
|
|
55
|
+
)
|
|
56
|
+
for item in items:
|
|
57
|
+
column = item.get("column")
|
|
58
|
+
if not column:
|
|
59
|
+
raise _fail("MEDIAN needs a 'column'.")
|
|
60
|
+
kind = column_types.get(str(column), "")
|
|
61
|
+
if kind not in ("", "NUMERIC"):
|
|
62
|
+
raise _fail(f"MEDIAN needs a NUMERIC column; '{column}' is {kind}.")
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
def _number(value: Any) -> float | None:
|
|
66
|
+
try:
|
|
67
|
+
return None if value is None or isinstance(value, bool) else float(value)
|
|
68
|
+
except (TypeError, ValueError):
|
|
69
|
+
return None
|
|
70
|
+
|
|
71
|
+
|
|
72
|
+
def weighted_median(counts: list[tuple[float, int]]) -> float | None:
|
|
73
|
+
"""The median of values given as (value, how many rows hold it); None when empty."""
|
|
74
|
+
ordered = sorted(counts)
|
|
75
|
+
total = sum(n for _, n in ordered)
|
|
76
|
+
if total == 0:
|
|
77
|
+
return None
|
|
78
|
+
wanted = [(total - 1) // 2, total // 2]
|
|
79
|
+
found: list[float] = []
|
|
80
|
+
seen = 0
|
|
81
|
+
for value, n in ordered:
|
|
82
|
+
found.extend(value for position in wanted if seen <= position < seen + n)
|
|
83
|
+
seen += n
|
|
84
|
+
return (found[0] + found[1]) / 2
|
|
85
|
+
|
|
86
|
+
|
|
87
|
+
def _counts_by_group(
|
|
88
|
+
reads: ReadContext, column: str, group_by: list[Any], condition: Any
|
|
89
|
+
) -> tuple[dict[tuple[Any, ...], list[tuple[float, int]]], int]:
|
|
90
|
+
"""(value, rows) per group for one column, and how many blank rows were left out."""
|
|
91
|
+
fields: dict[str, Any] = {
|
|
92
|
+
"aggregations": [{"function": "COUNT", "as_name": "n"}],
|
|
93
|
+
"group_by": [*group_by, column],
|
|
94
|
+
"limit": BACKEND_ROW_CAP,
|
|
95
|
+
}
|
|
96
|
+
if condition is not None:
|
|
97
|
+
fields[CONDITION_KWARG] = condition
|
|
98
|
+
rows = reads.query(**fields).get("data") or []
|
|
99
|
+
if len(rows) >= BACKEND_ROW_CAP:
|
|
100
|
+
raise _fail(
|
|
101
|
+
"Too many distinct values to take an exact median "
|
|
102
|
+
f"(the backend returns at most {BACKEND_ROW_CAP} groups).",
|
|
103
|
+
"Narrow the read with a condition.",
|
|
104
|
+
)
|
|
105
|
+
width = len(group_by)
|
|
106
|
+
counts: dict[tuple[Any, ...], list[tuple[float, int]]] = defaultdict(list)
|
|
107
|
+
blank = 0
|
|
108
|
+
for row in rows:
|
|
109
|
+
key = tuple(row.get(f"group_{i}") for i in range(width))
|
|
110
|
+
value, n = _number(row.get(f"group_{width}")), int(row.get("agg_0") or 0)
|
|
111
|
+
bucket = counts[key] # a group whose values are all blank still gets a row
|
|
112
|
+
if value is None:
|
|
113
|
+
blank += n
|
|
114
|
+
else:
|
|
115
|
+
bucket.append((value, n))
|
|
116
|
+
return counts, blank
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
def aggregate(reads: ReadContext, fields: dict[str, Any], condition: Any) -> dict[str, Any]:
|
|
120
|
+
"""Answer a MEDIAN read with rows shaped like the backend's (``group_N``, ``agg_N``/``metric``).
|
|
121
|
+
|
|
122
|
+
``fields`` holds the resolved SDK kwargs (internal column names).
|
|
123
|
+
"""
|
|
124
|
+
group_by = list(fields.get("group_by") or [])
|
|
125
|
+
items = [fields["metric"]] if "metric" in fields else list(fields["aggregations"])
|
|
126
|
+
keys = ["metric"] if "metric" in fields else [f"agg_{i}" for i in range(len(items))]
|
|
127
|
+
merged: dict[tuple[Any, ...], dict[str, Any]] = {}
|
|
128
|
+
skipped: dict[str, int] = {}
|
|
129
|
+
for key, item in zip(keys, items, strict=True):
|
|
130
|
+
counts, blank = _counts_by_group(reads, item["column"], group_by, condition)
|
|
131
|
+
if not group_by:
|
|
132
|
+
counts.setdefault((), [])
|
|
133
|
+
for group, values in counts.items():
|
|
134
|
+
row = merged.setdefault(group, {f"group_{i}": v for i, v in enumerate(group)})
|
|
135
|
+
row[key] = weighted_median(values)
|
|
136
|
+
if blank:
|
|
137
|
+
skipped[item["as_name"]] = blank
|
|
138
|
+
rows = list(merged.values())
|
|
139
|
+
result: dict[str, Any] = {"data": rows, "row_count": len(rows)}
|
|
140
|
+
if skipped:
|
|
141
|
+
named = ", ".join(f"{label}: {n}" for label, n in skipped.items())
|
|
142
|
+
result["median_note"] = (
|
|
143
|
+
f"MEDIAN is over non-blank values only; blank rows left out ({named})."
|
|
144
|
+
)
|
|
145
|
+
return result
|
|
@@ -291,7 +291,8 @@ commands:
|
|
|
291
291
|
known_restrictions: 'Read-only: computes and returns an aggregated result without adding a task to the
|
|
292
292
|
view''s pipeline or otherwise changing it. Pass exactly one of ''aggregations'' (a PIVOT group-by;
|
|
293
293
|
''group_by'' is optional) or ''metric'' (a single METRIC value). ''function'' is one of SUM, COUNT,
|
|
294
|
-
AVG, MIN, MAX, STDDEV, DISTINCT_COUNT.
|
|
294
|
+
AVG, MIN, MAX, STDDEV, DISTINCT_COUNT, MEDIAN. MEDIAN is exact over a NUMERIC column''s non-blank
|
|
295
|
+
values (median_note counts the blank rows left out) and goes in a read of its own. A group_by item is a column name, or {"column": C, "truncate":
|
|
295
296
|
DAY|WEEK|MONTH|QUARTER|YEAR} to bucket a DATE (a trend over time), or {"column": C, "resolution":
|
|
296
297
|
N} to bucket a NUMERIC; grouping by a raw date gives one row per day. A metric is a number: only COUNT
|
|
297
298
|
and DISTINCT_COUNT work on a DATE or TEXT column. For one column''s trend, top values or spread, view
|
|
@@ -682,7 +682,7 @@
|
|
|
682
682
|
{"command_id":"view.data-check.get","command_path":"view data-check get","disposition":"command","alias_of":null,"operation_ids":["GetPipelineDataCheck"],"positionals":[{"name":"view_id","type":"int","required":true,"metavar":"VIEW_ID","falls_back_to_field":null,"help":"ID of the view to act on."},{"name":"data_check_id","type":"int","required":true,"metavar":"DATA_CHECK_ID","falls_back_to_field":null,"help":"ID of the data check."},{"name":"dataset_id","type":"int","required":false,"metavar":"DATASET_ID","falls_back_to_field":"dataset_id","help":"ID of the dataset the view belongs to; resolved from the view when omitted."}],"options":[],"sdk_symbol":"mammoth.api.data_checks.DataChecksAPI.get","sdk_conversion":"Call mammoth.api.data_checks.DataChecksAPI.get with validated request fields.","request_model":"ViewDataCheckGetRequest","result_model":"ViewDataCheckGetResult","mutation_class":"read","confirmation":"none","wait_policy":"not_async","pagination_policy":"none","acceptance_evidence":"live_read_only","live_test":"LT-VIEW-DATA-CHECK-GET","live_exemption_reason":null,"contract_fixture":null,"required_fixture_guard":null,"secret_fields":[],"human_example":"mammoth view data-check get VIEW_ID DATA_CHECK_ID --help","agent_example":"mammoth view data-check get 123 456 789","unit_tests":["UT-VIEW-DATA-CHECK-GET"],"contract_tests":["CT-VIEW-DATA-CHECK-GET-HUMAN","CT-VIEW-DATA-CHECK-GET-JSON","CT-VIEW-DATA-CHECK-GET-ERROR"],"draft_test":null,"undo_test":null,"known_restrictions":null,"reviewed_by":"primary","output_schema":"openapi"},
|
|
683
683
|
{"command_id":"view.data-check.list","command_path":"view data-check list","disposition":"command","alias_of":null,"operation_ids":["GetPipelineDataChecks"],"positionals":[{"name":"view_id","type":"int","required":true,"metavar":"VIEW_ID","falls_back_to_field":null,"help":"ID of the view to act on."},{"name":"dataset_id","type":"int","required":false,"metavar":"DATASET_ID","falls_back_to_field":"dataset_id","help":"ID of the dataset the view belongs to; resolved from the view when omitted."}],"options":[],"sdk_symbol":"mammoth.api.data_checks.DataChecksAPI.list","sdk_conversion":"Call mammoth.api.data_checks.DataChecksAPI.list with validated request fields.","request_model":"ViewDataCheckListRequest","result_model":"ViewDataCheckListResult","mutation_class":"read","confirmation":"none","wait_policy":"not_async","pagination_policy":"single_page","acceptance_evidence":"live_read_only","live_test":"LT-VIEW-DATA-CHECK-LIST","live_exemption_reason":null,"contract_fixture":null,"required_fixture_guard":null,"secret_fields":[],"human_example":"mammoth view data-check list VIEW_ID --help","agent_example":"mammoth view data-check list 123 456","unit_tests":["UT-VIEW-DATA-CHECK-LIST"],"contract_tests":["CT-VIEW-DATA-CHECK-LIST-HUMAN","CT-VIEW-DATA-CHECK-LIST-JSON","CT-VIEW-DATA-CHECK-LIST-ERROR"],"draft_test":null,"undo_test":null,"known_restrictions":null,"reviewed_by":"primary","output_schema":"openapi"},
|
|
684
684
|
{"command_id":"view.data-check.update","command_path":"view data-check update","disposition":"command","alias_of":null,"operation_ids":["EditDatacheck"],"positionals":[{"name":"view_id","type":"int","required":true,"metavar":"VIEW_ID","falls_back_to_field":null,"help":"ID of the view to act on."},{"name":"data_check_id","type":"int","required":true,"metavar":"DATA_CHECK_ID","falls_back_to_field":null,"help":"ID of the data check."},{"name":"dataset_id","type":"int","required":false,"metavar":"DATASET_ID","falls_back_to_field":"dataset_id","help":"Exact parent dataset ID. Required for this command: pass it here or as the 'dataset_id' input field; only read commands may omit it and discover the parent."}],"options":[],"sdk_symbol":"mammoth.api.data_checks.DataChecksAPI.update","sdk_conversion":"Call mammoth.api.data_checks.DataChecksAPI.update with validated request fields.","request_model":"ViewDataCheckUpdateRequest","result_model":"ViewDataCheckUpdateResult","mutation_class":"benign_mutation","edits_target":true,"undo":{"strategy":"irreversible","reason":"Overwrites the view data check; the earlier value is not kept, so it cannot be restored."},"confirmation":"none","wait_policy":"not_async","pagination_policy":"none","acceptance_evidence":"live_disposable_project","live_test":"LT-VIEW-DATA-CHECK-UPDATE","live_exemption_reason":null,"contract_fixture":null,"required_fixture_guard":null,"secret_fields":[],"human_example":"mammoth view data-check update VIEW_ID DATA_CHECK_ID --help","agent_example":"mammoth view data-check update 123 456 789 --input '{\"body\": {\"patches\": [{\"op\": \"command\", \"path\": \"disable\", \"value\": null}]}}'","unit_tests":["UT-VIEW-DATA-CHECK-UPDATE"],"contract_tests":["CT-VIEW-DATA-CHECK-UPDATE-HUMAN","CT-VIEW-DATA-CHECK-UPDATE-JSON","CT-VIEW-DATA-CHECK-UPDATE-ERROR"],"draft_test":null,"undo_test":null,"known_restrictions":"patches are {op: command, path: enable|disable, value: null} or {op: replace, path: spec, value: AddDataCheckSpec}, the same body the web app sends. On release the PATCH returns HTTP 500 (outcome_unknown) from backend validation that runs after the change is committed; read the check back with view data-check get before retrying.","reviewed_by":"primary","output_schema":{"ref":"WriteResult"},"readback":{"command":"view.data-check.get","ids":{"view_id":"positional.0","data_check_id":"positional.1"},"kind":"object"}},
|
|
685
|
-
{"command_id":"view.data.aggregate","command_path":"view data aggregate","disposition":"command","alias_of":null,"operation_ids":["ExecuteVolatileQuery"],"positionals":[{"name":"view_id","type":"int","required":true,"metavar":"VIEW_ID","falls_back_to_field":null,"help":"ID of the view to act on."},{"name":"dataset_id","type":"int","required":false,"metavar":"DATASET_ID","falls_back_to_field":"dataset_id","help":"ID of the dataset the view belongs to; resolved from the view when omitted."}],"options":[],"sdk_symbol":"mammoth.api.dataviews.DataviewsAPI.aggregate","sdk_conversion":"Call mammoth.api.dataviews.DataviewsAPI.aggregate with validated request fields.","request_model":"ViewDataAggregateRequest","result_model":"ViewDataAggregateResult","mutation_class":"read","confirmation":"none","wait_policy":"always_wait","pagination_policy":"none","acceptance_evidence":"contract_only_no_disposable_fixture","live_test":null,"live_exemption_reason":"No automated disposable-view fixture wired into tests/live yet for this command.","contract_fixture":null,"required_fixture_guard":null,"secret_fields":[],"human_example":"mammoth view data aggregate VIEW_ID --help","agent_example":"mammoth view data aggregate 123 456 --input '{\"group_by\": [\"Channel\"], \"aggregations\": [{\"column\": \"Spend\", \"function\": \"SUM\", \"as_name\": \"Total Spend\"}]}'","unit_tests":["UT-VIEW-DATA-AGGREGATE"],"contract_tests":["CT-VIEW-DATA-AGGREGATE-HUMAN","CT-VIEW-DATA-AGGREGATE-JSON","CT-VIEW-DATA-AGGREGATE-ERROR"],"draft_test":null,"undo_test":null,"known_restrictions":"Read-only: computes and returns an aggregated result without adding a task to the view's pipeline or otherwise changing it. Pass exactly one of 'aggregations' (a PIVOT group-by; 'group_by' is optional) or 'metric' (a single METRIC value). 'function' is one of SUM, COUNT, AVG, MIN, MAX, STDDEV, DISTINCT_COUNT. A group_by item is a column name, or {\"column\": C, \"truncate\": DAY|WEEK|MONTH|QUARTER|YEAR} to bucket a DATE (a trend over time), or {\"column\": C, \"resolution\": N} to bucket a NUMERIC; grouping by a raw date gives one row per day. A metric is a number: only COUNT and DISTINCT_COUNT work on a DATE or TEXT column. For one column's trend, top values or spread, view data explore is the shorter call. order_by (result labels; a string like 'Total desc' or {column, direction}) with top ranks the groups on the backend; a limit without order_by keeps arbitrary rows and the result says ordered false. A group_by truncate on a TEXT column of dates is bucketed by the CLI: the stored format is detected from the data and stated in text_dates, an ambiguous day/month order (settle it with text_date_format) or an unreadable value fails loud, and a range condition (GT, GTE, LT, LTE, IN_RANGE with a YYYY-MM-DD value) on such a column works the same way. A truncate on a NUMERIC column, or a resolution on a non-NUMERIC one, is refused. To group by the part of a date, give {\"column\": C, \"part\": weekday|day|month|quarter|year} on a DATE or TEXT-date column: the groups are named (Monday, January, Q1) and in calendar order. This is the read-only way to answer by-weekday and by-month questions. An empty result carries observed_range: the min and max of the filtered or date column.","reviewed_by":"primary","output_schema":{"ref":"OpenObject"}},
|
|
685
|
+
{"command_id":"view.data.aggregate","command_path":"view data aggregate","disposition":"command","alias_of":null,"operation_ids":["ExecuteVolatileQuery"],"positionals":[{"name":"view_id","type":"int","required":true,"metavar":"VIEW_ID","falls_back_to_field":null,"help":"ID of the view to act on."},{"name":"dataset_id","type":"int","required":false,"metavar":"DATASET_ID","falls_back_to_field":"dataset_id","help":"ID of the dataset the view belongs to; resolved from the view when omitted."}],"options":[],"sdk_symbol":"mammoth.api.dataviews.DataviewsAPI.aggregate","sdk_conversion":"Call mammoth.api.dataviews.DataviewsAPI.aggregate with validated request fields.","request_model":"ViewDataAggregateRequest","result_model":"ViewDataAggregateResult","mutation_class":"read","confirmation":"none","wait_policy":"always_wait","pagination_policy":"none","acceptance_evidence":"contract_only_no_disposable_fixture","live_test":null,"live_exemption_reason":"No automated disposable-view fixture wired into tests/live yet for this command.","contract_fixture":null,"required_fixture_guard":null,"secret_fields":[],"human_example":"mammoth view data aggregate VIEW_ID --help","agent_example":"mammoth view data aggregate 123 456 --input '{\"group_by\": [\"Channel\"], \"aggregations\": [{\"column\": \"Spend\", \"function\": \"SUM\", \"as_name\": \"Total Spend\"}]}'","unit_tests":["UT-VIEW-DATA-AGGREGATE"],"contract_tests":["CT-VIEW-DATA-AGGREGATE-HUMAN","CT-VIEW-DATA-AGGREGATE-JSON","CT-VIEW-DATA-AGGREGATE-ERROR"],"draft_test":null,"undo_test":null,"known_restrictions":"Read-only: computes and returns an aggregated result without adding a task to the view's pipeline or otherwise changing it. Pass exactly one of 'aggregations' (a PIVOT group-by; 'group_by' is optional) or 'metric' (a single METRIC value). 'function' is one of SUM, COUNT, AVG, MIN, MAX, STDDEV, DISTINCT_COUNT, MEDIAN. MEDIAN is exact over a NUMERIC column's non-blank values (median_note counts the blank rows left out) and goes in a read of its own. A group_by item is a column name, or {\"column\": C, \"truncate\": DAY|WEEK|MONTH|QUARTER|YEAR} to bucket a DATE (a trend over time), or {\"column\": C, \"resolution\": N} to bucket a NUMERIC; grouping by a raw date gives one row per day. A metric is a number: only COUNT and DISTINCT_COUNT work on a DATE or TEXT column. For one column's trend, top values or spread, view data explore is the shorter call. order_by (result labels; a string like 'Total desc' or {column, direction}) with top ranks the groups on the backend; a limit without order_by keeps arbitrary rows and the result says ordered false. A group_by truncate on a TEXT column of dates is bucketed by the CLI: the stored format is detected from the data and stated in text_dates, an ambiguous day/month order (settle it with text_date_format) or an unreadable value fails loud, and a range condition (GT, GTE, LT, LTE, IN_RANGE with a YYYY-MM-DD value) on such a column works the same way. A truncate on a NUMERIC column, or a resolution on a non-NUMERIC one, is refused. To group by the part of a date, give {\"column\": C, \"part\": weekday|day|month|quarter|year} on a DATE or TEXT-date column: the groups are named (Monday, January, Q1) and in calendar order. This is the read-only way to answer by-weekday and by-month questions. An empty result carries observed_range: the min and max of the filtered or date column.","reviewed_by":"primary","output_schema":{"ref":"OpenObject"}},
|
|
686
686
|
{"command_id":"view.data.compare","output_schema":{"ref":"ViewDataCompare"},"command_path":"view data compare","disposition":"command","alias_of":null,"operation_ids":["ExecuteVolatileQuery"],"positionals":[{"name":"view_id_a","type":"int","required":true,"metavar":"VIEW_ID_A","falls_back_to_field":null,"help":"ID of the first view to compare."},{"name":"view_id_b","type":"int","required":true,"metavar":"VIEW_ID_B","falls_back_to_field":null,"help":"ID of the second view to compare."}],"options":[],"sdk_symbol":"mammoth.api.dataviews.DataviewsAPI.aggregate","sdk_conversion":"Runs view.data.aggregate's own handler once per view (which calls mammoth.api.dataviews.DataviewsAPI.aggregate), then joins client-side; recorded here so discovery advertises the same accepted document fields view.data.aggregate does, not this command's own dispatch (see _VIEW_DATA_COMPARE_FIELDS in command_contract.py).","request_model":"ViewDataCompareRequest","result_model":"ViewDataCompareResult","mutation_class":"read","confirmation":"none","wait_policy":"not_async","pagination_policy":"none","acceptance_evidence":"live_read_only","live_test":null,"live_exemption_reason":"Delegates to view.data.aggregate's own live coverage for the actual SDK call; the join/compare step itself is local and deterministic.","contract_fixture":null,"required_fixture_guard":null,"secret_fields":[],"human_example":"mammoth view data compare VIEW_ID_A VIEW_ID_B --help","agent_example":"mammoth view data compare 111 222 --input '{\"group_by\": [\"Campaign\"], \"aggregations\": [{\"column\": \"Spend\", \"function\": \"SUM\", \"as_name\": \"Spend\"}]}'","unit_tests":["UT-VIEW-DATA-COMPARE"],"contract_tests":["CT-VIEW-DATA-COMPARE"],"draft_test":null,"undo_test":null,"known_restrictions":"Every number reported to the user comes from a tool result: use this to compare the same PIVOT/METRIC aggregate across two views (e.g. two platforms' totals per campaign) instead of subtracting two 'view data aggregate' reads by hand -- calc is the tool for a single expression. Takes the exact same --input shape as view data aggregate (aggregations/group_by, or metric); rows are joined on the group-by key (or compared as a single row for a bare metric) using exact Decimal arithmetic. A key present in only one view's result is not an error: 'only_in_first' and 'only_in_second' give its exact count and the first 25 rows, and 'rows' holds the keys both views have.","reviewed_by":"primary"},
|
|
687
687
|
{"command_id":"view.data.drivers","output_schema":{"ref":"OpenObject"},"command_path":"view data drivers","disposition":"command","alias_of":null,"operation_ids":[],"positionals":[{"name":"view_id","type":"int","required":true,"metavar":"VIEW_ID","falls_back_to_field":null,"help":"ID of the view whose figures rose or dropped: the change to explain."},{"name":"dataset_id","type":"int","required":false,"metavar":"DATASET_ID","falls_back_to_field":null,"help":"ID of the dataset the view belongs to; resolved from the view when omitted."}],"options":[],"sdk_symbol":"mammoth_cli.commands.view_drivers.view_data_drivers","sdk_conversion":"Runs view data aggregate's own helpers (mammoth.api.dataviews.DataviewsAPI.aggregate) once per 'by' column, grouped by that column and a date bucket over both periods, then splits the buckets into the two periods client-side; the accepted document fields are the view.data.drivers entry of _LOCAL_CONTRACT_FIELDS in command_contract.py.","request_model":"ViewDataDriversRequest","result_model":"ViewDataDriversResult","mutation_class":"read","confirmation":"none","wait_policy":"not_async","pagination_policy":"none","acceptance_evidence":"live_read_only","live_test":null,"live_exemption_reason":"Read-only composite over view.data.aggregate's live-covered SDK call; the period split and ranking are local and unit-tested.","contract_fixture":null,"required_fixture_guard":null,"secret_fields":[],"human_example":"mammoth view data drivers VIEW_ID --help","agent_example":"mammoth view data drivers 123 --input '{\"measure\": {\"column\": \"revenue\", \"function\": \"SUM\"}, \"date_column\": \"sale_date\", \"compare\": [\"2026-07\", \"2026-08\"], \"by\": [\"store\", \"category\"]}'","unit_tests":["UT-VIEW-DATA-DRIVERS"],"contract_tests":["CT-VIEW-DATA-DRIVERS-HUMAN","CT-VIEW-DATA-DRIVERS-JSON","CT-VIEW-DATA-DRIVERS-ERROR"],"draft_test":null,"undo_test":null,"known_restrictions":"Read-only. Use this, not a series of view data aggregate reads, for \"why did X drop/rise\", \"what drove the change between July and August\", \"explain the decline\": one call returns the total for each period, the change and its percentage, whether it came from volume (the row count) or value (value per row), and per 'by' column the groups that moved most with their signed share_of_change. --input: \"measure\" {\"column\", \"function\": SUM or COUNT}; \"date_column\"; \"compare\" [A, B], each 'YYYY-MM', 'YYYY-Qn', 'YYYY' or {\"from\": \"YYYY-MM-DD\", \"to\": \"YYYY-MM-DD\"} (the change is read from A to B; any other form is refused); \"by\" 1 to 3 columns; optional \"conditions\" in view data aggregate's condition shape. partial_period names a period the data does not cover to its end (or from its start): say it is incomplete, never compare it as a whole period. Answer with the total change first, then the top contributors with their share, then volume vs value. Amounts carry the currency in 'currency'; when it is null give plain numbers and never invent a currency.","reviewed_by":"primary"},
|
|
688
688
|
{"command_id":"view.data.explore","output_schema":{"ref":"OpenObject"},"command_path":"view data explore","disposition":"command","alias_of":null,"operation_ids":["ExecuteVolatileQuery"],"positionals":[{"name":"view_id","type":"int","required":true,"metavar":"VIEW_ID","falls_back_to_field":null,"help":"ID of the view to act on."},{"name":"column","type":"str","required":true,"metavar":"COLUMN","falls_back_to_field":null,"help":"Display name of the column to explore."},{"name":"dataset_id","type":"int","required":false,"metavar":"DATASET_ID","falls_back_to_field":"dataset_id","help":"ID of the dataset the view belongs to; resolved from the view when omitted."}],"options":[],"sdk_symbol":"mammoth.api.dataviews.DataviewsAPI.explore","sdk_conversion":"Call mammoth.api.dataviews.DataviewsAPI.explore with validated request fields.","request_model":"ViewDataExploreRequest","result_model":"ViewDataExploreResult","mutation_class":"read","confirmation":"none","wait_policy":"always_wait","pagination_policy":"none","acceptance_evidence":"contract_only_no_disposable_fixture","live_test":null,"live_exemption_reason":"No automated disposable-view fixture wired into tests/live yet for this command.","contract_fixture":null,"required_fixture_guard":null,"secret_fields":[],"human_example":"mammoth view data explore VIEW_ID COLUMN --help","agent_example":"mammoth view data explore 123 Status 456","unit_tests":["UT-VIEW-DATA-EXPLORE"],"contract_tests":["CT-VIEW-DATA-EXPLORE-HUMAN","CT-VIEW-DATA-EXPLORE-JSON","CT-VIEW-DATA-EXPLORE-ERROR"],"draft_test":null,"undo_test":null,"known_restrictions":"Read-only: reads one column's value distribution -- trend, distribution, histogram, or top values. It does not open or change any card in the UI; to open Explore cards use 'view explore-panel set'. It reads without adding a task to the view's pipeline (never use 'view transform pivot' just to explore). DATE column: counts per 'level' bucket (AUTO default; SECOND, MINUTE, HOUR, DAY, WEEK, MONTH, QUARTER, YEAR, DECADE, CENTURY, MILLENNIUM) for \"what's trending\", \"over time\", \"by month\", \"by year\". NUMERIC column: counts per 'level' resolution (AUTO default; a power of 10) for a distribution or histogram. TEXT column: top values by count, 'limit' default 20 -- \"what's in this column\". Every bucket has 'count' and 'percentage' of the total. 'row_count' is the number of unique values (buckets). Options (--input): 'metric' {\"column\",\"function\"} adds a per-bucket SUM, COUNT, AVG, MIN, MAX, STDDEV or DISTINCT_COUNT over another column (the custom card); 'condition' filters rows first -- include/exclude values, blanks, a date or number range, text contains -- and several cards' selections combine as one AND condition (cross-filter); drill down by re-running at a finer 'level' with a 'condition' on the chosen bucket's range; 'percentage_of' \"metric\" makes 'percentage' the share of the 'metric' total (default: of the count); 'sort' count_desc, count_asc, value_asc, value_desc, metric_desc or metric_asc (blanks last; the card puts them first); 'limit' and 'offset' page the buckets (\"load more\"); 'range' true adds the exact earliest and latest value of a DATE or NUMERIC column under the same condition; '-o csv' prints the buckets as CSV; 'sequence' explores at a pipeline step. To exclude a value the way the card does (blank rows stay), use or(NE value, IS_EMPTY on that column): a plain NE, NOT_IN_LIST or not drops blank rows. To put the card on a dashboard, say it in words: 'dashboard chat edit DASHBOARD_ID' (prompt) or 'dashboard v3 generate'. Search several columns for text: or of CONTAINS per text column. Replace all values like this: 'view transform replace'. Related: distinct raw values of a DATE/NUMERIC column, a summary (min/max/sum/avg) or a matching-row count -> 'view data aggregate'; keep the filter as a pipeline step -> 'view transform filter'; save it as a new view -> 'view create' then 'view transform filter' on it; download all rows -> 'view export csv'. A TEXT column of dates takes a level (or column_type DATE): the format is detected from the data and stated in text_dates; ambiguous or unreadable dates fail loud. A column_type that disagrees with the stored type is refused, never dropped. Example: --input '{\"level\": \"MONTH\", \"condition\": {\"column\": \"Results\", \"operator\": \"EQ\", \"value\": \"Fail\"}}'. A figure for a period (year, quarter, month) is one explore of the DATE column with level YEAR, QUARTER or MONTH and a metric {\"column\": AMOUNT, \"function\": \"SUM\"}: it returns one figure per period and the date range the data covers, so no rows need paging. cumulative true adds a running total; keep one year or range with condition, for a year {\"column\": DATE_COLUMN, \"operator\": \"=\", \"value\": 2017, \"component\": \"year\"}. Figures come back rounded to two decimals: quote them as returned.","reviewed_by":"primary"},
|
|
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
|
{mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/auth.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
|
|
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
|
|
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
|
|
File without changes
|
|
File without changes
|
{mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/handoff.md
RENAMED
|
File without changes
|
{mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/input.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
|
{mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/recovery.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{mammoth_cli-2.4.1 → mammoth_cli-2.4.2}/mammoth_cli/bundled_skill/mammoth-cli/references/safety.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
|