mammoth-cli 2.2.35__tar.gz → 2.2.37__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.2.35 → mammoth_cli-2.2.37}/PKG-INFO +2 -2
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/__init__.py +1 -1
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/bundled_skill/mammoth-cli/references/capabilities.md +1 -1
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/bundled_skill/mammoth-cli/references/command-index.md +4 -4
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dashboard.md +21 -1
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/project.md +10 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/view.md +30 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/commands/dashboard.py +30 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/commands/dataset.py +22 -3
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/commands/file.py +52 -4
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/commands/project.py +28 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/commands/registry.py +7 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/commands/schema.py +6 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/commands/view.py +51 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/runtime/verify.py +2 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/services/input_fields.py +1 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/services/positionals.py +9 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/pyproject.toml +2 -2
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/spec/manifests/commands/dashboard.yaml +90 -2
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/spec/manifests/commands/project.yaml +56 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/spec/manifests/commands/view.yaml +146 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/spec/manifests/edits-target.source.yaml +1 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/spec/manifests/sdk-catalog.source.yaml +42 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/spec/manifests/sdk-methods.yaml +74 -2
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/.gitignore +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/LICENSE +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/README.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/__main__.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/app.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/bundled_skill/mammoth-cli/SKILL.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/bundled_skill/mammoth-cli/references/about-mammoth.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/bundled_skill/mammoth-cli/references/auth.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/bundled_skill/mammoth-cli/references/capabilities-misc.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/activity.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/addon.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/agent.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/ai.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/annotation.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/auth.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/automation.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/batch.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/billing.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/browse.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/calc.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/capability.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/client-app.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/completion.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/config.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/connector.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/context.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dashboard-qa.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dashboard-style.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dashboard-template.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/data-app.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dataset.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/doctor.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/external-key.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/file.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/folder.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/job.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/link.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/log.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/notification.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/parameter.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/report.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/schedule.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/schema.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/skill.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/snippet.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/support.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/template.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/trash.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/upgrade.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/user.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/version.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/view-transform.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/webhook.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/workflow.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/workspace.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/bundled_skill/mammoth-cli/references/handoff.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/bundled_skill/mammoth-cli/references/input.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/bundled_skill/mammoth-cli/references/jobs-drafts.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/bundled_skill/mammoth-cli/references/machine-output.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/bundled_skill/mammoth-cli/references/operations.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/auth-scope.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/cleanup.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/dashboards.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/database-import.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/end-to-end.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/exports.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/index.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/need-action.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/resources.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/scheduling.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/transforms.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/typed-etl-discovery.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/bundled_skill/mammoth-cli/references/recovery.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/bundled_skill/mammoth-cli/references/report-checklist.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/bundled_skill/mammoth-cli/references/retention.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/bundled_skill/mammoth-cli/references/safety.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/bundled_skill/mammoth-cli/references/task-start.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/commands/__init__.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/commands/activity.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/commands/addon.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/commands/agent.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/commands/ai.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/commands/annotation.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/commands/auth.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/commands/automation.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/commands/batch.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/commands/billing.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/commands/browse.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/commands/calc.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/commands/capability.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/commands/client_app.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/commands/completion.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/commands/config.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/commands/connector.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/commands/context.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/commands/data_app.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/commands/doctor.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/commands/external_key.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/commands/folder.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/commands/job.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/commands/link.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/commands/notification.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/commands/parameter.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/commands/report.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/commands/schedule.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/commands/skill.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/commands/snippet.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/commands/support.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/commands/template.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/commands/trash.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/commands/upgrade.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/commands/user.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/commands/view_ops.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/commands/view_profile.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/commands/webhook.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/commands/workflow.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/commands/workspace.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/context/__init__.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/context/credentials.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/context/endpoint.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/context/profiles.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/context/resolver.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/contracts/__init__.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/contracts/auth.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/embed.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/errors/__init__.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/errors/envelope.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/manifest/__init__.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/manifest/loader.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/messages/__init__.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/output/__init__.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/output/envelope.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/output/normalize.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/output/policy.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/output/progress.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/output/render.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/py.typed +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/runtime/__init__.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/runtime/confirm.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/runtime/dataset_health.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/runtime/dryrun.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/runtime/dryrun_targets.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/runtime/embedded.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/runtime/executor.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/runtime/input_loader.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/runtime/intent_only.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/runtime/invocation.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/runtime/new_data.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/runtime/options.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/runtime/parents.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/runtime/runlog.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/runtime/session.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/runtime/state.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/runtime/strict.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/runtime/updates.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/runtime/validate.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/services/__init__.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/services/append_blank_columns.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/services/argspec.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/services/board_values.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/services/coerce.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/services/command_contract.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/services/conditional_format.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/services/conditions.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/services/dashboard_filters.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/services/dashboard_pages.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/services/dashboard_review.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/services/data_profile.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/services/data_quality.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/services/dispatch.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/services/factory.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/services/listing.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/services/local_time.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/services/mapping.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/services/openapi_types.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/services/protocol.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/services/read_queries.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/services/sdk_service.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/services/sql_check.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/services/stored_stats.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/services/testing.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/services/text_dates.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/services/type_system.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/services/write_impact.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/skills/__init__.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/skills/installer.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/skills/steering.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/mammoth_cli/testing.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/spec/manifests/commands/activity.yaml +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/spec/manifests/commands/addon.yaml +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/spec/manifests/commands/agent.yaml +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/spec/manifests/commands/ai.yaml +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/spec/manifests/commands/annotation.yaml +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/spec/manifests/commands/auth.yaml +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/spec/manifests/commands/automation.yaml +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/spec/manifests/commands/batch.yaml +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/spec/manifests/commands/billing.yaml +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/spec/manifests/commands/browse.yaml +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/spec/manifests/commands/calc.yaml +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/spec/manifests/commands/capability.yaml +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/spec/manifests/commands/client-app.yaml +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/spec/manifests/commands/completion.yaml +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/spec/manifests/commands/config.yaml +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/spec/manifests/commands/connector.yaml +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/spec/manifests/commands/context.yaml +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/spec/manifests/commands/data-app.yaml +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/spec/manifests/commands/dataset.yaml +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/spec/manifests/commands/doctor.yaml +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/spec/manifests/commands/external-key.yaml +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/spec/manifests/commands/file.yaml +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/spec/manifests/commands/folder.yaml +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/spec/manifests/commands/job.yaml +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/spec/manifests/commands/link.yaml +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/spec/manifests/commands/log.yaml +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/spec/manifests/commands/notification.yaml +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/spec/manifests/commands/parameter.yaml +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/spec/manifests/commands/report.yaml +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/spec/manifests/commands/schedule.yaml +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/spec/manifests/commands/schema.yaml +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/spec/manifests/commands/skill.yaml +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/spec/manifests/commands/snippet.yaml +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/spec/manifests/commands/support.yaml +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/spec/manifests/commands/template.yaml +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/spec/manifests/commands/trash.yaml +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/spec/manifests/commands/upgrade.yaml +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/spec/manifests/commands/user.yaml +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/spec/manifests/commands/version.yaml +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/spec/manifests/commands/webhook.yaml +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/spec/manifests/commands/workflow.yaml +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/spec/manifests/commands/workspace.yaml +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/spec/manifests/openapi-operations.yaml +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/spec/manifests/schema-v1.json +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/spec/openapi/metadata.json +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.37}/spec/openapi/openapi.json +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mammoth-cli
|
|
3
|
-
Version: 2.2.
|
|
3
|
+
Version: 2.2.37
|
|
4
4
|
Summary: Command-line interface for the Mammoth Analytics platform
|
|
5
5
|
Project-URL: homepage, https://mammoth.io
|
|
6
6
|
Project-URL: repository, https://github.com/EdgeMetric/mammothsdk
|
|
@@ -17,7 +17,7 @@ Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
|
17
17
|
Requires-Python: <3.15,>=3.12
|
|
18
18
|
Requires-Dist: jsonschema>=4.20
|
|
19
19
|
Requires-Dist: keyring<26,>=25.7
|
|
20
|
-
Requires-Dist: mammoth-io<0.9,>=0.8.
|
|
20
|
+
Requires-Dist: mammoth-io<0.9,>=0.8.20
|
|
21
21
|
Requires-Dist: platformdirs<5,>=4.10
|
|
22
22
|
Requires-Dist: pydantic<3,>=2.12.5
|
|
23
23
|
Requires-Dist: pyyaml<7,>=6
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
# What is proven on release
|
|
2
2
|
|
|
3
3
|
Generated from `docs/release-capability-matrix.json`; do not edit by hand.
|
|
4
|
-
The CLI publishes
|
|
4
|
+
The CLI publishes 652 commands. 516 of them bind one of the 545 API operations in the matrix; the remainder are local commands (`schema`, `auth`, `doctor`, `log`, ...) or typed variants that share an operation (`view transform *` commands submit through `view.task.add`, except `rename-columns` and `sort`, which set view display properties through `view.update`). 262 bound commands ran once successfully on release, 1 are not supported there, and the rest are untried. Untried is not broken: discover the contract with `mammoth schema get COMMAND_ID`, run it, and treat the structured error envelope as the answer. Use an untried command normally: confirm a write with the user first, check its result with a read afterwards, and never refuse a command only because it is untried.
|
|
5
5
|
|
|
6
6
|
Status meanings:
|
|
7
7
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Published CLI command catalog
|
|
2
2
|
|
|
3
|
-
This generated catalog is a lookup table for every command in the published CLI manifest, currently
|
|
3
|
+
This generated catalog is a lookup table for every command in the published CLI manifest, currently 652; each entry carries its release status line. It is a command-contract index, not an assertion that every backend/OpenAPI operation has a CLI binding. For an exact local CLI contract, run `mammoth schema get COMMAND_ID`; `mammoth capability list` is an API-binding inventory and can omit typed/local CLI routes. For focused workflows, read the [recipes index](recipes/index.md). Sensitive structured input must come from a private file or pipe; never put secrets in literal argv.
|
|
4
4
|
|
|
5
5
|
Load only the applicable domain file:
|
|
6
6
|
|
|
@@ -24,7 +24,7 @@ Load only the applicable domain file:
|
|
|
24
24
|
- [dashboard-qa](commands/dashboard-qa.md) — 14 published commands
|
|
25
25
|
- [dashboard-template](commands/dashboard-template.md) — 12 published commands
|
|
26
26
|
- [dashboard-style](commands/dashboard-style.md) — 10 published commands
|
|
27
|
-
- [dashboard](commands/dashboard.md) —
|
|
27
|
+
- [dashboard](commands/dashboard.md) — 98 published commands
|
|
28
28
|
- [data-app](commands/data-app.md) — 12 published commands
|
|
29
29
|
- [dataset](commands/dataset.md) — 22 published commands
|
|
30
30
|
- [doctor](commands/doctor.md) — 1 published commands
|
|
@@ -36,7 +36,7 @@ Load only the applicable domain file:
|
|
|
36
36
|
- [log](commands/log.md) — 2 published commands
|
|
37
37
|
- [notification](commands/notification.md) — 5 published commands
|
|
38
38
|
- [parameter](commands/parameter.md) — 14 published commands
|
|
39
|
-
- [project](commands/project.md) —
|
|
39
|
+
- [project](commands/project.md) — 25 published commands
|
|
40
40
|
- [report](commands/report.md) — 1 published commands
|
|
41
41
|
- [schedule](commands/schedule.md) — 5 published commands
|
|
42
42
|
- [schema](commands/schema.md) — 3 published commands
|
|
@@ -49,7 +49,7 @@ Load only the applicable domain file:
|
|
|
49
49
|
- [user](commands/user.md) — 8 published commands
|
|
50
50
|
- [version](commands/version.md) — 1 published commands
|
|
51
51
|
- [view-transform](commands/view-transform.md) — 32 published commands
|
|
52
|
-
- [view](commands/view.md) —
|
|
52
|
+
- [view](commands/view.md) — 94 published commands
|
|
53
53
|
- [webhook](commands/webhook.md) — 7 published commands
|
|
54
54
|
- [workflow](commands/workflow.md) — 16 published commands
|
|
55
55
|
- [workspace](commands/workspace.md) — 26 published commands
|
|
@@ -308,7 +308,7 @@ Run: `mammoth dashboard duplicate`. Exact input fields: `mammoth schema get dash
|
|
|
308
308
|
|
|
309
309
|
Example: `mammoth dashboard duplicate 123`. Placeholders are illustrative; resolve IDs and input from observed reads.
|
|
310
310
|
|
|
311
|
-
Result: `DashboardDuplicateResult`; mutation `benign_mutation`, confirmation `none`, wait policy `
|
|
311
|
+
Result: `DashboardDuplicateResult`; mutation `benign_mutation`, confirmation `none`, wait policy `start_or_wait`.
|
|
312
312
|
|
|
313
313
|
Status on release: ran once on CLI 2.0.12 — Dashboard sweep 2026-09-18: exit 0 on release with CLI 2.0.12; result keys: id. duplicated D=52 -> D2=54 Single invocation only; no error-path or variant coverage.
|
|
314
314
|
|
|
@@ -562,6 +562,26 @@ Result: `DashboardPagesAddResult`; mutation `high_impact`, confirmation `confirm
|
|
|
562
562
|
|
|
563
563
|
Status on release: ran once on CLI 2.0.28 — ILG simulation 2026-09-19: exit 0 on release with CLI 2.0.28. Needs --yes --confirm DASHBOARD_ID. body.params.pages[] takes PageAdd objects (title, focus{kpis}, charts[]); the route runs through the LLM guard and dropped unit.prefix on a money card ('nothing…
|
|
564
564
|
|
|
565
|
+
### `dashboard.pbix-assess`
|
|
566
|
+
|
|
567
|
+
Run: `mammoth dashboard pbix-assess`. Exact input fields: `mammoth schema get dashboard.pbix-assess`.
|
|
568
|
+
|
|
569
|
+
Example: `mammoth dashboard pbix-assess 123`. Placeholders are illustrative; resolve IDs and input from observed reads.
|
|
570
|
+
|
|
571
|
+
Result: `DashboardPbixAssessResult`; mutation `read`, confirmation `none`, wait policy `always_wait`.
|
|
572
|
+
|
|
573
|
+
Status on release: untried; no live run recorded.
|
|
574
|
+
|
|
575
|
+
### `dashboard.pbix-intent`
|
|
576
|
+
|
|
577
|
+
Run: `mammoth dashboard pbix-intent`. Exact input fields: `mammoth schema get dashboard.pbix-intent`.
|
|
578
|
+
|
|
579
|
+
Example: `mammoth dashboard pbix-intent 123 123`. Placeholders are illustrative; resolve IDs and input from observed reads.
|
|
580
|
+
|
|
581
|
+
Result: `DashboardPbixIntentResult`; mutation `read`, confirmation `none`, wait policy `always_wait`.
|
|
582
|
+
|
|
583
|
+
Status on release: untried; no live run recorded.
|
|
584
|
+
|
|
565
585
|
### `dashboard.pdf-artifact`
|
|
566
586
|
|
|
567
587
|
Run: `mammoth dashboard pdf-artifact`. Exact input fields: `mammoth schema get dashboard.pdf-artifact`.
|
|
@@ -42,6 +42,16 @@ Result: `ProjectCheckpointListResult`; mutation `read`, confirmation `none`, wai
|
|
|
42
42
|
|
|
43
43
|
Status on release: ran once on CLI an earlier release — Bounded release read in project 3 succeeded; empty checkpoint list observed. No Full claim: no non-empty fixture.
|
|
44
44
|
|
|
45
|
+
### `project.copy`
|
|
46
|
+
|
|
47
|
+
Run: `mammoth project copy`. Exact input fields: `mammoth schema get project.copy`.
|
|
48
|
+
|
|
49
|
+
Example: `mammoth project copy 123 'Revenue report'`. Placeholders are illustrative; resolve IDs and input from observed reads.
|
|
50
|
+
|
|
51
|
+
Result: `ProjectCopyResult`; mutation `benign_mutation`, confirmation `none`, wait policy `always_wait`.
|
|
52
|
+
|
|
53
|
+
Status on release: untried; no live run recorded.
|
|
54
|
+
|
|
45
55
|
### `project.create`
|
|
46
56
|
|
|
47
57
|
Run: `mammoth project create`. Exact input fields: `mammoth schema get project.create`.
|
|
@@ -52,6 +52,16 @@ Result: `ViewAiProfileResult`; mutation `benign_mutation`, confirmation `none`,
|
|
|
52
52
|
|
|
53
53
|
Status on release: ran once on CLI 2.0.15 — re-verification 2026-09-18: exit 0 on release with CLI 2.0.15. Fix held: release ProfileGenerationSpec {params:{action}} body accepted; returned real generated insights: {"data":{"insights":{"performance_analysis":{"domain_specific_insights":[...]}}}}. Single…
|
|
54
54
|
|
|
55
|
+
### `view.analyze`
|
|
56
|
+
|
|
57
|
+
Run: `mammoth view analyze`. Exact input fields: `mammoth schema get view.analyze`.
|
|
58
|
+
|
|
59
|
+
Example: `mammoth view analyze 123 123`. Placeholders are illustrative; resolve IDs and input from observed reads.
|
|
60
|
+
|
|
61
|
+
Result: `ViewAnalyzeResult`; mutation `read`, confirmation `none`, wait policy `not_async`.
|
|
62
|
+
|
|
63
|
+
Status on release: untried; no live run recorded.
|
|
64
|
+
|
|
55
65
|
### `view.bulk-delete`
|
|
56
66
|
|
|
57
67
|
Run: `mammoth view bulk-delete`. Exact input fields: `mammoth schema get view.bulk-delete`.
|
|
@@ -112,6 +122,16 @@ Result: `ViewCheckpointUpdateResult`; mutation `benign_mutation`, confirmation `
|
|
|
112
122
|
|
|
113
123
|
Status on release: ran once on CLI 2.0.18 — fixture-lifecycle sweep 2026-09-19: exit 0 on release with CLI 2.0.18. First attempt sending a full AddCheckpointSpec body (matching create's shape) failed with invalid_input_field_type; update actually needs body.patches[] (CheckpointPatches/CheckPointPatch…
|
|
114
124
|
|
|
125
|
+
### `view.compare`
|
|
126
|
+
|
|
127
|
+
Run: `mammoth view compare`. Exact input fields: `mammoth schema get view.compare`.
|
|
128
|
+
|
|
129
|
+
Example: `mammoth view compare --input '{"pairs": [[1, 2]]}'`. Placeholders are illustrative; resolve IDs and input from observed reads.
|
|
130
|
+
|
|
131
|
+
Result: `ViewCompareResult`; mutation `read`, confirmation `none`, wait policy `not_async`.
|
|
132
|
+
|
|
133
|
+
Status on release: untried; no live run recorded.
|
|
134
|
+
|
|
115
135
|
### `view.conditional-format.create`
|
|
116
136
|
|
|
117
137
|
Run: `mammoth view conditional-format create`. Exact input fields: `mammoth schema get view.conditional-format.create`.
|
|
@@ -714,6 +734,16 @@ Result: `ViewListResult`; mutation `read`, confirmation `none`, wait policy `not
|
|
|
714
734
|
|
|
715
735
|
Status on release: ran once on CLI 2.0.21 — ergonomics sweep 2026-09-19: exit 0 on release with CLI 2.0.21. Listed dataview 116 (ds_id 94, row_count 3); the parent cache picked up 116 -> 94 so later view commands took the view id alone. Single invocation only.
|
|
716
736
|
|
|
737
|
+
### `view.optimize`
|
|
738
|
+
|
|
739
|
+
Run: `mammoth view optimize`. Exact input fields: `mammoth schema get view.optimize`.
|
|
740
|
+
|
|
741
|
+
Example: `mammoth view optimize 123 123`. Illustrative only: append `--yes` after observing an owned target.
|
|
742
|
+
|
|
743
|
+
Result: `ViewOptimizeResult`; mutation `reversible_pipeline`, confirmation `prompt_or_yes`, wait policy `start_or_wait`.
|
|
744
|
+
|
|
745
|
+
Status on release: untried; no live run recorded.
|
|
746
|
+
|
|
717
747
|
### `view.parameter-context`
|
|
718
748
|
|
|
719
749
|
Run: `mammoth view parameter-context`. Exact input fields: `mammoth schema get view.parameter-context`.
|
|
@@ -746,6 +746,36 @@ def generated_dashboard(invocation: Invocation) -> HandlerResult:
|
|
|
746
746
|
return data, _meta(invocation, auth.workspace_id)
|
|
747
747
|
|
|
748
748
|
|
|
749
|
+
def dashboard_duplicate(invocation: Invocation) -> HandlerResult:
|
|
750
|
+
"""Copy a v3 dashboard; with ``target_dataview_id`` also wait for its data swap.
|
|
751
|
+
|
|
752
|
+
The result keeps ``id`` and ``swap_job_id`` and adds ``swap_state`` and
|
|
753
|
+
``swap_result`` when a swap job was queued.
|
|
754
|
+
"""
|
|
755
|
+
document = _bound_document(invocation)
|
|
756
|
+
positionals = _generated_positionals(invocation)
|
|
757
|
+
kwargs = bind_command_inputs(invocation.command_id, document, **positionals)
|
|
758
|
+
with open_service(invocation) as (service, auth):
|
|
759
|
+
data = service.call(_symbol(invocation), **kwargs)
|
|
760
|
+
if hasattr(data, "model_dump"):
|
|
761
|
+
data = data.model_dump(mode="json")
|
|
762
|
+
if isinstance(data, dict) and data.get("swap_job_id") is not None:
|
|
763
|
+
settled = service.wait_if_job({"job_id": data["swap_job_id"]})
|
|
764
|
+
data = {**data, "swap_state": "success", "swap_result": settled}
|
|
765
|
+
return data, _meta(invocation, auth.workspace_id)
|
|
766
|
+
|
|
767
|
+
|
|
768
|
+
def dashboard_attachment_read(invocation: Invocation) -> HandlerResult:
|
|
769
|
+
"""Run a workbook read on an attachment (intent or assess) and return the job's result."""
|
|
770
|
+
positionals = _generated_positionals(invocation)
|
|
771
|
+
with open_service(invocation) as (service, auth):
|
|
772
|
+
queued = service.call(_symbol(invocation), **positionals)
|
|
773
|
+
if hasattr(queued, "model_dump"):
|
|
774
|
+
queued = queued.model_dump(mode="json")
|
|
775
|
+
data = service.wait_if_job(queued)
|
|
776
|
+
return data, _meta(invocation, auth.workspace_id)
|
|
777
|
+
|
|
778
|
+
|
|
749
779
|
#: Board-building steps whose result carries the evaluated card/tile numbers.
|
|
750
780
|
_VALUED_COMMANDS = frozenset({"dashboard.v3.generate", "dashboard.chat.edit"})
|
|
751
781
|
|
|
@@ -804,6 +804,9 @@ def dataset_create(invocation: Invocation) -> HandlerResult:
|
|
|
804
804
|
dataset_spec = _require_field(document, "dataset_spec")
|
|
805
805
|
ds_creation_type = _require_field(document, "ds_creation_type")
|
|
806
806
|
_require_clone_views(ds_creation_type, dataset_spec)
|
|
807
|
+
# A clone can land in another project (``dataset_spec.target_project_id``): the
|
|
808
|
+
# name check and the result's scope are that project's, not the active one's.
|
|
809
|
+
landing_project_id = _clone_target_project(ds_creation_type, dataset_spec) or project_id
|
|
807
810
|
kwargs: dict[str, Any] = {
|
|
808
811
|
"dataset_spec": dataset_spec,
|
|
809
812
|
"ds_creation_type": ds_creation_type,
|
|
@@ -813,15 +816,31 @@ def dataset_create(invocation: Invocation) -> HandlerResult:
|
|
|
813
816
|
_forward_optional(document, kwargs, ("folder_resource_id",))
|
|
814
817
|
with open_service(invocation) as (service, auth):
|
|
815
818
|
if invocation.dry_run:
|
|
816
|
-
_predict_final_name(invocation, service, dataset_spec,
|
|
819
|
+
_predict_final_name(invocation, service, dataset_spec, landing_project_id)
|
|
817
820
|
data = service.call(_symbol(invocation), **kwargs)
|
|
818
821
|
# ``datasets.create`` returns a bare job handle and never waits. Block on
|
|
819
822
|
# it here (honoring ``--job-timeout``) so the command reports a finished
|
|
820
823
|
# dataset id instead of a job id the caller must poll separately.
|
|
821
824
|
settled = service.wait_if_job(data)
|
|
822
825
|
result = _created_dataset(data, settled)
|
|
823
|
-
_add_final_name(service, result, dataset_spec,
|
|
824
|
-
return result, _meta(invocation, auth.workspace_id,
|
|
826
|
+
_add_final_name(service, result, dataset_spec, landing_project_id)
|
|
827
|
+
return result, _meta(invocation, auth.workspace_id, landing_project_id)
|
|
828
|
+
|
|
829
|
+
|
|
830
|
+
def _clone_target_project(ds_creation_type: object, dataset_spec: object) -> int | None:
|
|
831
|
+
"""The clone's ``target_project_id`` (a positive integer), or None when it is not set."""
|
|
832
|
+
if ds_creation_type != "clone" or not isinstance(dataset_spec, dict):
|
|
833
|
+
return None
|
|
834
|
+
target = dataset_spec.get("target_project_id")
|
|
835
|
+
if target is None:
|
|
836
|
+
return None
|
|
837
|
+
if isinstance(target, bool) or not isinstance(target, int) or target <= 0:
|
|
838
|
+
raise CliError(
|
|
839
|
+
code=CODE_INVALID_ARGUMENT,
|
|
840
|
+
message=f"dataset_spec.target_project_id must be a positive integer, got {target!r}.",
|
|
841
|
+
exit_status=EXIT_USAGE,
|
|
842
|
+
)
|
|
843
|
+
return target
|
|
825
844
|
|
|
826
845
|
|
|
827
846
|
def _require_clone_views(ds_creation_type: object, dataset_spec: object) -> None:
|
|
@@ -226,16 +226,25 @@ def file_upload(invocation: Invocation) -> HandlerResult:
|
|
|
226
226
|
hint="Pass the file(s) as positional arguments or a 'files' input field.",
|
|
227
227
|
)
|
|
228
228
|
with open_service(invocation) as (service, auth):
|
|
229
|
-
|
|
230
|
-
#
|
|
231
|
-
# id(s) as a bare int/list. When the caller opts out of waiting
|
|
232
|
-
# (``wait_for_completion: false``) the bare job id is returned unchanged.
|
|
229
|
+
# When the caller opts out of waiting (``wait_for_completion: false``)
|
|
230
|
+
# the bare job id is returned unchanged.
|
|
233
231
|
if not document.get("wait_for_completion", True):
|
|
232
|
+
data = service.call(_symbol(invocation), **kwargs)
|
|
234
233
|
return data, _meta(invocation, auth.workspace_id, resolved_project(invocation))
|
|
234
|
+
# The SDK waits for the upload job; ``upload_result`` also returns the
|
|
235
|
+
# files the server refused, which the bare id list of ``upload`` drops.
|
|
236
|
+
outcome = service.call(_UPLOAD_RESULT_SYMBOL, **kwargs)
|
|
237
|
+
data = outcome["dataset_ids"]
|
|
238
|
+
refused = _refused_files(outcome.get("errors"))
|
|
239
|
+
if outcome.get("errors") and not data:
|
|
240
|
+
raise _upload_refused_error(outcome["errors"], refused)
|
|
235
241
|
# A finished upload job does not mean a usable dataset: a CSV with an
|
|
236
242
|
# ambiguous date column lands in ``need_action`` with no view. Report
|
|
237
243
|
# the status the platform holds for each dataset, not an assumed one.
|
|
238
244
|
result = _upload_result(data, lambda dataset_id: _dataset_status(service, dataset_id))
|
|
245
|
+
if refused:
|
|
246
|
+
result["warnings"] = [_upload_refused_message(outcome["errors"], refused)]
|
|
247
|
+
result["refused_files"] = refused
|
|
239
248
|
project_id = resolved_project(invocation)
|
|
240
249
|
previewed = 0
|
|
241
250
|
for entry in result["datasets"]:
|
|
@@ -290,6 +299,45 @@ def _require_local_files(files: Any) -> None:
|
|
|
290
299
|
)
|
|
291
300
|
|
|
292
301
|
|
|
302
|
+
_UPLOAD_RESULT_SYMBOL = "mammoth.api.files.FilesAPI.upload_result"
|
|
303
|
+
|
|
304
|
+
#: Workbook files that cannot become datasets; ``dashboard pbix-intent`` reads them.
|
|
305
|
+
_WORKBOOK_SUFFIXES = (".pbix", ".twb", ".twbx")
|
|
306
|
+
_WORKBOOK_HINT = (
|
|
307
|
+
"Power BI and Tableau workbooks are not datasets: attach the workbook in the chat "
|
|
308
|
+
"and use `dashboard pbix-intent` to read it."
|
|
309
|
+
)
|
|
310
|
+
|
|
311
|
+
|
|
312
|
+
def _refused_files(errors: Any) -> list[str]:
|
|
313
|
+
"""File names the upload job refused, flattened from its ``errors`` map."""
|
|
314
|
+
if not isinstance(errors, dict):
|
|
315
|
+
return []
|
|
316
|
+
names: list[str] = []
|
|
317
|
+
for value in errors.values():
|
|
318
|
+
for item in value if isinstance(value, list) else [value]:
|
|
319
|
+
if isinstance(item, str) and item not in names:
|
|
320
|
+
names.append(item)
|
|
321
|
+
return names
|
|
322
|
+
|
|
323
|
+
|
|
324
|
+
def _upload_refused_message(errors: dict[str, Any], refused: list[str]) -> str:
|
|
325
|
+
reasons = ", ".join(sorted(errors))
|
|
326
|
+
return f"The server refused {', '.join(refused) or 'the upload'} ({reasons})."
|
|
327
|
+
|
|
328
|
+
|
|
329
|
+
def _upload_refused_error(errors: dict[str, Any], refused: list[str]) -> CliError:
|
|
330
|
+
"""The error for an upload whose files were all refused (no dataset made)."""
|
|
331
|
+
workbook = any(name.lower().endswith(_WORKBOOK_SUFFIXES) for name in refused)
|
|
332
|
+
return CliError(
|
|
333
|
+
code=CODE_INVALID_ARGUMENT,
|
|
334
|
+
message=_upload_refused_message(errors, refused) + " No dataset was created.",
|
|
335
|
+
exit_status=EXIT_USAGE,
|
|
336
|
+
hint=_WORKBOOK_HINT if workbook else "Upload a supported file type (CSV, Excel, JSON).",
|
|
337
|
+
details={"errors": errors, "refused_files": refused},
|
|
338
|
+
)
|
|
339
|
+
|
|
340
|
+
|
|
293
341
|
_DATASET_GET_SYMBOL = "mammoth.api.datasets.DatasetsAPI.get"
|
|
294
342
|
|
|
295
343
|
|
|
@@ -275,6 +275,34 @@ def project_create(invocation: Invocation) -> HandlerResult:
|
|
|
275
275
|
return data, _meta(invocation, auth.workspace_id, resolved_project(invocation))
|
|
276
276
|
|
|
277
277
|
|
|
278
|
+
def project_copy(invocation: Invocation) -> HandlerResult:
|
|
279
|
+
"""Copy a project into a new one and wait for the copy job.
|
|
280
|
+
|
|
281
|
+
``PROJECT_ID NAME`` are positional; ``dataset_ids``, ``include_dashboards`` and
|
|
282
|
+
``exclude_data`` come from ``--input``. The result is the job's:
|
|
283
|
+
``project_id``, ``dataset_map``, ``view_map``, ``skipped`` and ``dashboards``.
|
|
284
|
+
"""
|
|
285
|
+
source_id = _int_positional(invocation, "project id")
|
|
286
|
+
name = invocation.extra_args[1] if len(invocation.extra_args) > 1 else None
|
|
287
|
+
if source_id is None or not name:
|
|
288
|
+
raise CliError(
|
|
289
|
+
code=CODE_MISSING_ARGUMENT,
|
|
290
|
+
message="A source project id and a name for the copy are required.",
|
|
291
|
+
exit_status=EXIT_USAGE,
|
|
292
|
+
hint="mammoth project copy PROJECT_ID NAME",
|
|
293
|
+
)
|
|
294
|
+
document = invocation.load_input() or {}
|
|
295
|
+
kwargs: dict[str, Any] = {"project_id": source_id, "name": name}
|
|
296
|
+
_forward_optional(document, kwargs, _COPY_OPTIONAL)
|
|
297
|
+
with open_service(invocation) as (service, auth):
|
|
298
|
+
queued = service.call(_symbol(invocation), **kwargs)
|
|
299
|
+
data = service.wait_if_job(queued)
|
|
300
|
+
return data, _meta(invocation, auth.workspace_id, source_id)
|
|
301
|
+
|
|
302
|
+
|
|
303
|
+
_COPY_OPTIONAL = ("dataset_ids", "include_dashboards", "exclude_data")
|
|
304
|
+
|
|
305
|
+
|
|
278
306
|
_ENSURE_CREATE_SYMBOL = "mammoth.api.projects.ProjectsAPI.create"
|
|
279
307
|
|
|
280
308
|
|
|
@@ -266,6 +266,7 @@ HANDLERS: dict[str, Handler] = {
|
|
|
266
266
|
"project.publish-credentials": project_cmd.project_publish_credentials,
|
|
267
267
|
# project family (mutations)
|
|
268
268
|
"project.create": project_cmd.project_create,
|
|
269
|
+
"project.copy": project_cmd.project_copy,
|
|
269
270
|
"project.ensure": project_cmd.project_ensure,
|
|
270
271
|
"project.update": project_cmd.project_update,
|
|
271
272
|
"project.delete": project_cmd.project_delete,
|
|
@@ -454,6 +455,9 @@ HANDLERS: dict[str, Handler] = {
|
|
|
454
455
|
"dashboard.qa.insights": dashboard_cmd.generated_dashboard,
|
|
455
456
|
"dashboard.templates.pending": dashboard_cmd.generated_dashboard,
|
|
456
457
|
"dashboard.templates.use": dashboard_cmd.generated_dashboard,
|
|
458
|
+
"dashboard.duplicate": dashboard_cmd.dashboard_duplicate,
|
|
459
|
+
"dashboard.pbix-intent": dashboard_cmd.dashboard_attachment_read,
|
|
460
|
+
"dashboard.pbix-assess": dashboard_cmd.dashboard_attachment_read,
|
|
457
461
|
"dashboard.assess-twb": dashboard_cmd.dashboard_assess_twb,
|
|
458
462
|
"dashboard.assess-pbix": dashboard_cmd.dashboard_assess_pbix,
|
|
459
463
|
"dashboard.import-workbook": dashboard_cmd.dashboard_import_workbook,
|
|
@@ -716,6 +720,9 @@ HANDLERS: dict[str, Handler] = {
|
|
|
716
720
|
"view.restore": view_cmd.view_restore,
|
|
717
721
|
"view.trash": view_cmd.view_trash,
|
|
718
722
|
"view.impact": view_cmd.view_impact,
|
|
723
|
+
"view.analyze": view_cmd.view_analyze,
|
|
724
|
+
"view.optimize": view_cmd.view_optimize,
|
|
725
|
+
"view.compare": view_cmd.view_compare,
|
|
719
726
|
"view.update": view_cmd.view_update,
|
|
720
727
|
"view.data.get": view_cmd.view_data_get,
|
|
721
728
|
"view.data.query": view_cmd.view_data_query,
|
|
@@ -449,6 +449,12 @@ _COMMAND_DISCOVERY_PURPOSES = {
|
|
|
449
449
|
"dashboard.context.apply": "apply the reviewed context change to the dashboard",
|
|
450
450
|
"dashboard.qa.insights": "what questions viewers asked on the dashboard grouped unanswered",
|
|
451
451
|
"view.impact": "what breaks if I delete this dataview or a task dependents impact",
|
|
452
|
+
"view.analyze": "which pipeline steps are wasted duplicate suspended no-op filter move earlier",
|
|
453
|
+
"view.optimize": "drop wasted pipeline steps hoist filters",
|
|
454
|
+
"view.compare": "are these two views the same data row counts column differences checksums",
|
|
455
|
+
"dashboard.pbix-intent": "read an attached Power BI workbook against my view what would map",
|
|
456
|
+
"dashboard.pbix-assess": "what does an attached Power BI workbook hold",
|
|
457
|
+
"project.copy": "copy a whole project into a new one datasets views pipelines dashboards",
|
|
452
458
|
"browse.ancestors": "folder path breadcrumb where does this folder live parent folders chain",
|
|
453
459
|
"browse.search": (
|
|
454
460
|
"find search a dataset view folder by name across all projects whole workspace global"
|
|
@@ -906,6 +906,57 @@ def view_impact(invocation: Invocation) -> HandlerResult:
|
|
|
906
906
|
return data, _meta(invocation, auth.workspace_id, project_id)
|
|
907
907
|
|
|
908
908
|
|
|
909
|
+
def view_analyze(invocation: Invocation) -> HandlerResult:
|
|
910
|
+
"""List pipeline steps that can be dropped or moved without changing the result (read-only)."""
|
|
911
|
+
project_id = require_project(invocation)
|
|
912
|
+
dataview_id = _require_int_positional_at(invocation, 0, "view id")
|
|
913
|
+
document = invocation.load_input() or {}
|
|
914
|
+
with open_service(invocation) as (service, auth):
|
|
915
|
+
dataset_id = _resolve_dataset_id(service, invocation, dataview_id, document)
|
|
916
|
+
data = service.call(
|
|
917
|
+
_symbol(invocation),
|
|
918
|
+
dataset_id=dataset_id,
|
|
919
|
+
dataview_id=dataview_id,
|
|
920
|
+
project_id=project_id,
|
|
921
|
+
)
|
|
922
|
+
return data, _meta(invocation, auth.workspace_id, project_id)
|
|
923
|
+
|
|
924
|
+
|
|
925
|
+
def view_optimize(invocation: Invocation) -> HandlerResult:
|
|
926
|
+
"""Apply the safe pipeline findings, then wait for the rerun it queued.
|
|
927
|
+
|
|
928
|
+
``apply_rules`` limits the rules applied; omitted, every safe finding is applied.
|
|
929
|
+
The result keeps the server's ``applied`` / ``skipped`` / step counts and adds
|
|
930
|
+
``job_state`` and ``job_result`` when a rerun job was queued.
|
|
931
|
+
"""
|
|
932
|
+
project_id = require_project(invocation)
|
|
933
|
+
dataview_id = _require_int_positional_at(invocation, 0, "view id")
|
|
934
|
+
document = invocation.load_input() or {}
|
|
935
|
+
enforce_confirmation(
|
|
936
|
+
invocation,
|
|
937
|
+
policy=POLICY_PROMPT_OR_YES,
|
|
938
|
+
action=f"optimize the pipeline of view {dataview_id}",
|
|
939
|
+
)
|
|
940
|
+
kwargs: dict[str, Any] = {"dataview_id": dataview_id, "project_id": project_id}
|
|
941
|
+
_forward_optional(document, kwargs, ("apply_rules",))
|
|
942
|
+
with open_service(invocation) as (service, auth):
|
|
943
|
+
kwargs["dataset_id"] = _resolve_dataset_id(service, invocation, dataview_id, document)
|
|
944
|
+
data = service.call(_symbol(invocation), **kwargs)
|
|
945
|
+
if isinstance(data, dict) and data.get("job_id") is not None:
|
|
946
|
+
settled = service.wait_if_job({"job_id": data["job_id"]})
|
|
947
|
+
data = {**data, "job_state": "success", "job_result": settled}
|
|
948
|
+
return data, _meta(invocation, auth.workspace_id, project_id)
|
|
949
|
+
|
|
950
|
+
|
|
951
|
+
def view_compare(invocation: Invocation) -> HandlerResult:
|
|
952
|
+
"""Compare dataviews pairwise: rows, column differences and checksums (read-only)."""
|
|
953
|
+
document = invocation.load_input()
|
|
954
|
+
pairs = _require_field(document, "pairs")
|
|
955
|
+
with open_service(invocation) as (service, auth):
|
|
956
|
+
data = service.call(_symbol(invocation), pairs=pairs)
|
|
957
|
+
return data, _meta(invocation, auth.workspace_id, None)
|
|
958
|
+
|
|
959
|
+
|
|
909
960
|
def view_update(invocation: Invocation) -> HandlerResult:
|
|
910
961
|
"""Rename a view from the name input field; any other patch is refused.
|
|
911
962
|
|
|
@@ -241,6 +241,8 @@ def _verify_and_reason(
|
|
|
241
241
|
return False, _pipeline_error_reason(pipeline_error)
|
|
242
242
|
if data.get("has_error"):
|
|
243
243
|
return False, "the operation reported an error"
|
|
244
|
+
if data.get("refused_files"):
|
|
245
|
+
return False, "the server refused some of the files"
|
|
244
246
|
for status in (data.get("status"), _job_status(data)):
|
|
245
247
|
if isinstance(status, str) and status.lower() in _FAILURE_STATUSES:
|
|
246
248
|
return False, "the operation failed"
|
|
@@ -93,6 +93,7 @@ _EXAMPLE_INPUT_HINTS: dict[str, dict[str, Any]] = {
|
|
|
93
93
|
"dashboard.format-preview": {"style": "presentation"},
|
|
94
94
|
# ``task`` needs a task_id too; the whole-view scope is the one that stands alone.
|
|
95
95
|
"view.impact": {"scope": "view"},
|
|
96
|
+
"view.compare": {"pairs": [[1, 2]]},
|
|
96
97
|
# One [type, id] pair per resource, as ``browse resources`` lists them.
|
|
97
98
|
"browse.resources.bulk": {"items": [["dataview", 42]]},
|
|
98
99
|
"view.export.azure-blob": {
|
|
@@ -440,6 +440,13 @@ POSITIONAL_OVERRIDES: dict[str, tuple[PositionalSpec, ...]] = {
|
|
|
440
440
|
falls_back_to_field="name",
|
|
441
441
|
),
|
|
442
442
|
),
|
|
443
|
+
# project copy: the source project is the resource, the new project's name follows.
|
|
444
|
+
"project.copy": (
|
|
445
|
+
PositionalSpec(
|
|
446
|
+
name="project_id", type=int, required=True, help="ID of the project to copy."
|
|
447
|
+
),
|
|
448
|
+
PositionalSpec(name="name", type=str, required=True, help="Name of the new project."),
|
|
449
|
+
),
|
|
443
450
|
# project ensure: exact name to find or create, positional or ``name`` field.
|
|
444
451
|
"project.ensure": (
|
|
445
452
|
PositionalSpec(
|
|
@@ -779,6 +786,8 @@ POSITIONAL_OVERRIDES: dict[str, tuple[PositionalSpec, ...]] = {
|
|
|
779
786
|
"view.restore",
|
|
780
787
|
"view.trash",
|
|
781
788
|
"view.impact",
|
|
789
|
+
"view.analyze",
|
|
790
|
+
"view.optimize",
|
|
782
791
|
"view.update",
|
|
783
792
|
"view.conditional-format.create",
|
|
784
793
|
"view.conditional-format.delete-all",
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "mammoth-cli"
|
|
3
|
-
version = "2.2.
|
|
3
|
+
version = "2.2.37"
|
|
4
4
|
description = "Command-line interface for the Mammoth Analytics platform"
|
|
5
5
|
authors = [{name = "Mammoth Analytics", email = "support@mammoth.io"}]
|
|
6
6
|
readme = "README.md"
|
|
7
7
|
license = "LicenseRef-Proprietary"
|
|
8
8
|
requires-python = ">=3.12,<3.15"
|
|
9
9
|
dependencies = [
|
|
10
|
-
"mammoth-io (>=0.8.
|
|
10
|
+
"mammoth-io (>=0.8.20,<0.9)",
|
|
11
11
|
"typer (>=0.27,<0.28)",
|
|
12
12
|
"rich (>=15,<16)",
|
|
13
13
|
"platformdirs (>=4.10,<5)",
|
|
@@ -1034,7 +1034,7 @@ commands:
|
|
|
1034
1034
|
mutation_class: benign_mutation
|
|
1035
1035
|
edits_target: false
|
|
1036
1036
|
confirmation: none
|
|
1037
|
-
wait_policy:
|
|
1037
|
+
wait_policy: start_or_wait
|
|
1038
1038
|
pagination_policy: none
|
|
1039
1039
|
acceptance_evidence: contract_only_no_disposable_fixture
|
|
1040
1040
|
readback:
|
|
@@ -1058,7 +1058,7 @@ commands:
|
|
|
1058
1058
|
- CT-DASHBOARD-DUPLICATE-ERROR
|
|
1059
1059
|
draft_test: null
|
|
1060
1060
|
undo_test: null
|
|
1061
|
-
known_restrictions:
|
|
1061
|
+
known_restrictions: 'Copies the dashboard over the same dataset. Example: mammoth dashboard duplicate 123 --input ''{"target_dataview_id": 456}''. With the target_dataview_id input field the copy is made in that view''s project and its data swap is queued: the command waits for that job and adds swap_state and swap_result next to id and swap_job_id. project_id (optional) names the project for the copy.'
|
|
1062
1062
|
reviewed_by: primary
|
|
1063
1063
|
- command_id: dashboard.embed.config.get
|
|
1064
1064
|
command_path: dashboard embed config get
|
|
@@ -5804,3 +5804,91 @@ commands:
|
|
|
5804
5804
|
command: dashboard.qa.insights
|
|
5805
5805
|
ids: {}
|
|
5806
5806
|
kind: object
|
|
5807
|
+
- command_id: dashboard.pbix-intent
|
|
5808
|
+
command_path: dashboard pbix-intent
|
|
5809
|
+
disposition: command
|
|
5810
|
+
alias_of: null
|
|
5811
|
+
operation_ids: []
|
|
5812
|
+
positionals:
|
|
5813
|
+
- name: attachment_id
|
|
5814
|
+
type: int
|
|
5815
|
+
required: true
|
|
5816
|
+
metavar: ATTACHMENT_ID
|
|
5817
|
+
falls_back_to_field: null
|
|
5818
|
+
help: ID of the attachment.
|
|
5819
|
+
- name: target_dataview_id
|
|
5820
|
+
type: int
|
|
5821
|
+
required: true
|
|
5822
|
+
metavar: TARGET_DATAVIEW_ID
|
|
5823
|
+
falls_back_to_field: null
|
|
5824
|
+
help: ID of the target dataview.
|
|
5825
|
+
options: []
|
|
5826
|
+
sdk_symbol: mammoth.api.dashboards.DashboardsAPI.attachment_intent
|
|
5827
|
+
sdk_conversion: Call mammoth.api.dashboards.DashboardsAPI.attachment_intent with validated request fields.
|
|
5828
|
+
request_model: DashboardPbixIntentRequest
|
|
5829
|
+
result_model: DashboardPbixIntentResult
|
|
5830
|
+
mutation_class: read
|
|
5831
|
+
confirmation: none
|
|
5832
|
+
wait_policy: always_wait
|
|
5833
|
+
pagination_policy: none
|
|
5834
|
+
acceptance_evidence: contract_only_no_disposable_fixture
|
|
5835
|
+
live_test: null
|
|
5836
|
+
live_exemption_reason: Backend route ships with this release; no disposable fixture runs it yet.
|
|
5837
|
+
contract_fixture: null
|
|
5838
|
+
required_fixture_guard: null
|
|
5839
|
+
secret_fields: []
|
|
5840
|
+
human_example: mammoth dashboard pbix-intent ATTACHMENT_ID TARGET_DATAVIEW_ID --help
|
|
5841
|
+
agent_example: mammoth dashboard pbix-intent 123 123
|
|
5842
|
+
unit_tests:
|
|
5843
|
+
- UT-DASHBOARD-PBIX-INTENT
|
|
5844
|
+
contract_tests:
|
|
5845
|
+
- CT-DASHBOARD-PBIX-INTENT-HUMAN
|
|
5846
|
+
- CT-DASHBOARD-PBIX-INTENT-JSON
|
|
5847
|
+
- CT-DASHBOARD-PBIX-INTENT-ERROR
|
|
5848
|
+
draft_test: null
|
|
5849
|
+
undo_test: null
|
|
5850
|
+
known_restrictions: 'Read-only. Reads a Power BI workbook the web app already attached (ATTACHMENT_ID)
|
|
5851
|
+
against one of your views (TARGET_DATAVIEW_ID), waits for the job and returns its result: intent,
|
|
5852
|
+
coverage {mapped, total}, unmapped_visuals, field_map and target_dataview_id, or {rejected, source}.
|
|
5853
|
+
No dashboard or sample data is made. Uploading the attachment is done in the web app.'
|
|
5854
|
+
reviewed_by: primary
|
|
5855
|
+
- command_id: dashboard.pbix-assess
|
|
5856
|
+
command_path: dashboard pbix-assess
|
|
5857
|
+
disposition: command
|
|
5858
|
+
alias_of: null
|
|
5859
|
+
operation_ids: []
|
|
5860
|
+
positionals:
|
|
5861
|
+
- name: attachment_id
|
|
5862
|
+
type: int
|
|
5863
|
+
required: true
|
|
5864
|
+
metavar: ATTACHMENT_ID
|
|
5865
|
+
falls_back_to_field: null
|
|
5866
|
+
help: ID of the attachment.
|
|
5867
|
+
options: []
|
|
5868
|
+
sdk_symbol: mammoth.api.dashboards.DashboardsAPI.attachment_assess
|
|
5869
|
+
sdk_conversion: Call mammoth.api.dashboards.DashboardsAPI.attachment_assess with validated request fields.
|
|
5870
|
+
request_model: DashboardPbixAssessRequest
|
|
5871
|
+
result_model: DashboardPbixAssessResult
|
|
5872
|
+
mutation_class: read
|
|
5873
|
+
confirmation: none
|
|
5874
|
+
wait_policy: always_wait
|
|
5875
|
+
pagination_policy: none
|
|
5876
|
+
acceptance_evidence: contract_only_no_disposable_fixture
|
|
5877
|
+
live_test: null
|
|
5878
|
+
live_exemption_reason: Backend route ships with this release; no disposable fixture runs it yet.
|
|
5879
|
+
contract_fixture: null
|
|
5880
|
+
required_fixture_guard: null
|
|
5881
|
+
secret_fields: []
|
|
5882
|
+
human_example: mammoth dashboard pbix-assess ATTACHMENT_ID --help
|
|
5883
|
+
agent_example: mammoth dashboard pbix-assess 123
|
|
5884
|
+
unit_tests:
|
|
5885
|
+
- UT-DASHBOARD-PBIX-ASSESS
|
|
5886
|
+
contract_tests:
|
|
5887
|
+
- CT-DASHBOARD-PBIX-ASSESS-HUMAN
|
|
5888
|
+
- CT-DASHBOARD-PBIX-ASSESS-JSON
|
|
5889
|
+
- CT-DASHBOARD-PBIX-ASSESS-ERROR
|
|
5890
|
+
draft_test: null
|
|
5891
|
+
undo_test: null
|
|
5892
|
+
known_restrictions: 'Read-only. Assesses a workbook the web app already attached (ATTACHMENT_ID): waits
|
|
5893
|
+
for the job and returns its result. Use dashboard assess-pbix for a local file.'
|
|
5894
|
+
reviewed_by: primary
|