mammoth-cli 2.2.35__tar.gz → 2.2.36__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.36}/PKG-INFO +2 -2
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/__init__.py +1 -1
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/bundled_skill/mammoth-cli/references/capabilities.md +1 -1
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/bundled_skill/mammoth-cli/references/command-index.md +4 -4
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dashboard.md +21 -1
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/project.md +10 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/view.md +30 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/commands/dashboard.py +30 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/commands/dataset.py +22 -3
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/commands/project.py +28 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/commands/registry.py +7 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/commands/schema.py +6 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/commands/view.py +51 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/services/input_fields.py +1 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/services/positionals.py +9 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/pyproject.toml +2 -2
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/spec/manifests/commands/dashboard.yaml +90 -2
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/spec/manifests/commands/project.yaml +56 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/spec/manifests/commands/view.yaml +146 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/spec/manifests/edits-target.source.yaml +1 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/spec/manifests/sdk-catalog.source.yaml +42 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/spec/manifests/sdk-methods.yaml +74 -2
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/.gitignore +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/LICENSE +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/README.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/__main__.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/app.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/bundled_skill/mammoth-cli/SKILL.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/bundled_skill/mammoth-cli/references/about-mammoth.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/bundled_skill/mammoth-cli/references/auth.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/bundled_skill/mammoth-cli/references/capabilities-misc.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/activity.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/addon.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/agent.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/ai.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/annotation.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/auth.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/automation.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/batch.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/billing.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/browse.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/calc.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/capability.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/client-app.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/completion.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/config.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/connector.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/context.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dashboard-qa.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dashboard-style.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dashboard-template.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/data-app.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dataset.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/doctor.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/external-key.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/file.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/folder.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/job.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/link.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/log.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/notification.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/parameter.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/report.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/schedule.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/schema.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/skill.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/snippet.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/support.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/template.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/trash.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/upgrade.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/user.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/version.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/view-transform.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/webhook.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/workflow.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/workspace.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/bundled_skill/mammoth-cli/references/handoff.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/bundled_skill/mammoth-cli/references/input.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/bundled_skill/mammoth-cli/references/jobs-drafts.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/bundled_skill/mammoth-cli/references/machine-output.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/bundled_skill/mammoth-cli/references/operations.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/auth-scope.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/cleanup.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/dashboards.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/database-import.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/end-to-end.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/exports.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/index.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/need-action.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/resources.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/scheduling.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/transforms.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/typed-etl-discovery.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/bundled_skill/mammoth-cli/references/recovery.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/bundled_skill/mammoth-cli/references/report-checklist.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/bundled_skill/mammoth-cli/references/retention.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/bundled_skill/mammoth-cli/references/safety.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/bundled_skill/mammoth-cli/references/task-start.md +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/commands/__init__.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/commands/activity.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/commands/addon.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/commands/agent.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/commands/ai.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/commands/annotation.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/commands/auth.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/commands/automation.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/commands/batch.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/commands/billing.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/commands/browse.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/commands/calc.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/commands/capability.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/commands/client_app.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/commands/completion.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/commands/config.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/commands/connector.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/commands/context.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/commands/data_app.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/commands/doctor.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/commands/external_key.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/commands/file.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/commands/folder.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/commands/job.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/commands/link.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/commands/notification.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/commands/parameter.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/commands/report.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/commands/schedule.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/commands/skill.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/commands/snippet.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/commands/support.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/commands/template.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/commands/trash.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/commands/upgrade.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/commands/user.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/commands/view_ops.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/commands/view_profile.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/commands/webhook.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/commands/workflow.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/commands/workspace.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/context/__init__.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/context/credentials.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/context/endpoint.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/context/profiles.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/context/resolver.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/contracts/__init__.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/contracts/auth.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/embed.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/errors/__init__.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/errors/envelope.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/manifest/__init__.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/manifest/loader.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/messages/__init__.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/output/__init__.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/output/envelope.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/output/normalize.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/output/policy.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/output/progress.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/output/render.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/py.typed +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/runtime/__init__.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/runtime/confirm.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/runtime/dataset_health.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/runtime/dryrun.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/runtime/dryrun_targets.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/runtime/embedded.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/runtime/executor.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/runtime/input_loader.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/runtime/intent_only.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/runtime/invocation.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/runtime/new_data.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/runtime/options.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/runtime/parents.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/runtime/runlog.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/runtime/session.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/runtime/state.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/runtime/strict.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/runtime/updates.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/runtime/validate.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/runtime/verify.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/services/__init__.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/services/append_blank_columns.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/services/argspec.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/services/board_values.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/services/coerce.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/services/command_contract.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/services/conditional_format.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/services/conditions.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/services/dashboard_filters.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/services/dashboard_pages.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/services/dashboard_review.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/services/data_profile.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/services/data_quality.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/services/dispatch.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/services/factory.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/services/listing.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/services/local_time.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/services/mapping.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/services/openapi_types.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/services/protocol.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/services/read_queries.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/services/sdk_service.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/services/sql_check.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/services/stored_stats.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/services/testing.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/services/text_dates.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/services/type_system.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/services/write_impact.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/skills/__init__.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/skills/installer.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/skills/steering.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/mammoth_cli/testing.py +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/spec/manifests/commands/activity.yaml +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/spec/manifests/commands/addon.yaml +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/spec/manifests/commands/agent.yaml +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/spec/manifests/commands/ai.yaml +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/spec/manifests/commands/annotation.yaml +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/spec/manifests/commands/auth.yaml +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/spec/manifests/commands/automation.yaml +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/spec/manifests/commands/batch.yaml +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/spec/manifests/commands/billing.yaml +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/spec/manifests/commands/browse.yaml +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/spec/manifests/commands/calc.yaml +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/spec/manifests/commands/capability.yaml +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/spec/manifests/commands/client-app.yaml +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/spec/manifests/commands/completion.yaml +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/spec/manifests/commands/config.yaml +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/spec/manifests/commands/connector.yaml +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/spec/manifests/commands/context.yaml +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/spec/manifests/commands/data-app.yaml +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/spec/manifests/commands/dataset.yaml +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/spec/manifests/commands/doctor.yaml +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/spec/manifests/commands/external-key.yaml +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/spec/manifests/commands/file.yaml +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/spec/manifests/commands/folder.yaml +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/spec/manifests/commands/job.yaml +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/spec/manifests/commands/link.yaml +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/spec/manifests/commands/log.yaml +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/spec/manifests/commands/notification.yaml +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/spec/manifests/commands/parameter.yaml +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/spec/manifests/commands/report.yaml +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/spec/manifests/commands/schedule.yaml +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/spec/manifests/commands/schema.yaml +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/spec/manifests/commands/skill.yaml +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/spec/manifests/commands/snippet.yaml +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/spec/manifests/commands/support.yaml +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/spec/manifests/commands/template.yaml +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/spec/manifests/commands/trash.yaml +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/spec/manifests/commands/upgrade.yaml +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/spec/manifests/commands/user.yaml +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/spec/manifests/commands/version.yaml +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/spec/manifests/commands/webhook.yaml +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/spec/manifests/commands/workflow.yaml +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/spec/manifests/commands/workspace.yaml +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/spec/manifests/openapi-operations.yaml +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/spec/manifests/schema-v1.json +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/spec/openapi/metadata.json +0 -0
- {mammoth_cli-2.2.35 → mammoth_cli-2.2.36}/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.36
|
|
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.19
|
|
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:
|
|
@@ -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
|
|
|
@@ -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.36"
|
|
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.19,<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
|
|
@@ -1024,3 +1024,59 @@ commands:
|
|
|
1024
1024
|
known_restrictions: null
|
|
1025
1025
|
reviewed_by: primary
|
|
1026
1026
|
no_readback: "no CLI read command exposes per-project user role assignments"
|
|
1027
|
+
- command_id: project.copy
|
|
1028
|
+
command_path: project copy
|
|
1029
|
+
disposition: command
|
|
1030
|
+
alias_of: null
|
|
1031
|
+
operation_ids: []
|
|
1032
|
+
positionals:
|
|
1033
|
+
- name: project_id
|
|
1034
|
+
type: int
|
|
1035
|
+
required: true
|
|
1036
|
+
metavar: PROJECT_ID
|
|
1037
|
+
falls_back_to_field: null
|
|
1038
|
+
help: ID of the project to copy.
|
|
1039
|
+
- name: name
|
|
1040
|
+
type: str
|
|
1041
|
+
required: true
|
|
1042
|
+
metavar: NAME
|
|
1043
|
+
falls_back_to_field: null
|
|
1044
|
+
help: Name of the new project.
|
|
1045
|
+
options: []
|
|
1046
|
+
sdk_symbol: mammoth.api.projects.ProjectsAPI.copy
|
|
1047
|
+
sdk_conversion: Call mammoth.api.projects.ProjectsAPI.copy with validated request fields.
|
|
1048
|
+
request_model: ProjectCopyRequest
|
|
1049
|
+
result_model: ProjectCopyResult
|
|
1050
|
+
mutation_class: benign_mutation
|
|
1051
|
+
edits_target: false
|
|
1052
|
+
confirmation: none
|
|
1053
|
+
wait_policy: always_wait
|
|
1054
|
+
pagination_policy: none
|
|
1055
|
+
acceptance_evidence: contract_only_no_disposable_fixture
|
|
1056
|
+
live_test: null
|
|
1057
|
+
live_exemption_reason: Backend route ships with this release; no disposable fixture runs it yet.
|
|
1058
|
+
contract_fixture: null
|
|
1059
|
+
required_fixture_guard: null
|
|
1060
|
+
secret_fields: []
|
|
1061
|
+
human_example: mammoth project copy PROJECT_ID NAME --help
|
|
1062
|
+
agent_example: mammoth project copy 123 'Revenue report'
|
|
1063
|
+
unit_tests:
|
|
1064
|
+
- UT-PROJECT-COPY
|
|
1065
|
+
contract_tests:
|
|
1066
|
+
- CT-PROJECT-COPY-HUMAN
|
|
1067
|
+
- CT-PROJECT-COPY-JSON
|
|
1068
|
+
- CT-PROJECT-COPY-ERROR
|
|
1069
|
+
draft_test: null
|
|
1070
|
+
undo_test: null
|
|
1071
|
+
known_restrictions: 'Creates a project: copies the datasets, views and pipelines of PROJECT_ID into
|
|
1072
|
+
a new project NAME, in one job the command waits for. Input fields: dataset_ids (copy only these;
|
|
1073
|
+
default all), include_dashboards (default false), exclude_data (default false, copies pipelines without
|
|
1074
|
+
rows). The result is project_id, dataset_map, view_map, skipped (what was left behind or still points
|
|
1075
|
+
outside the copy) and dashboards (dashboard_id, new_dashboard_id). Needs permission to create projects.
|
|
1076
|
+
Sweep with ''project delete ID --yes --confirm ID''.'
|
|
1077
|
+
reviewed_by: primary
|
|
1078
|
+
readback:
|
|
1079
|
+
command: project.get
|
|
1080
|
+
ids:
|
|
1081
|
+
project_id: result.project_id
|
|
1082
|
+
kind: object
|