mammoth-cli 2.0.86__tar.gz → 2.0.88__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.0.86 → mammoth_cli-2.0.88}/PKG-INFO +2 -2
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/__init__.py +1 -1
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/bundled_skill/mammoth-cli/references/command-index.md +5 -4
- mammoth_cli-2.0.88/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dashboard-style.md +103 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dashboard.md +30 -100
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dataset.md +20 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/external-key.md +3 -1
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/project.md +1 -1
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/view.md +10 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/workspace.md +1 -1
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/dashboards.md +66 -2
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/commands/dashboard.py +100 -1
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/commands/dataset.py +63 -1
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/commands/job.py +21 -1
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/commands/project.py +36 -10
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/commands/registry.py +7 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/commands/schema.py +34 -4
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/commands/view.py +476 -64
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/commands/view_ops.py +8 -1
- mammoth_cli-2.0.88/mammoth_cli/commands/view_profile.py +548 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/output/envelope.py +6 -0
- mammoth_cli-2.0.88/mammoth_cli/runtime/dataset_health.py +112 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/runtime/dryrun.py +4 -2
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/runtime/executor.py +7 -1
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/runtime/invocation.py +10 -3
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/runtime/state.py +70 -3
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/runtime/verify.py +31 -4
- mammoth_cli-2.0.88/mammoth_cli/services/board_values.py +244 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/services/command_contract.py +50 -0
- mammoth_cli-2.0.88/mammoth_cli/services/dashboard_filters.py +81 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/services/dashboard_review.py +22 -7
- mammoth_cli-2.0.88/mammoth_cli/services/data_profile.py +289 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/services/input_fields.py +6 -0
- mammoth_cli-2.0.88/mammoth_cli/services/listing.py +271 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/services/positionals.py +17 -2
- mammoth_cli-2.0.88/mammoth_cli/services/read_queries.py +465 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/services/sdk_service.py +4 -4
- mammoth_cli-2.0.88/mammoth_cli/services/stored_stats.py +103 -0
- mammoth_cli-2.0.88/mammoth_cli/services/text_dates.py +303 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/pyproject.toml +2 -2
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/spec/manifests/commands/addon.yaml +6 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/spec/manifests/commands/agent.yaml +3 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/spec/manifests/commands/ai.yaml +3 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/spec/manifests/commands/annotation.yaml +4 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/spec/manifests/commands/auth.yaml +2 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/spec/manifests/commands/automation.yaml +5 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/spec/manifests/commands/batch.yaml +5 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/spec/manifests/commands/billing.yaml +12 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/spec/manifests/commands/client-app.yaml +3 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/spec/manifests/commands/completion.yaml +1 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/spec/manifests/commands/config.yaml +1 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/spec/manifests/commands/connector.yaml +10 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/spec/manifests/commands/context.yaml +2 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/spec/manifests/commands/dashboard.yaml +205 -3
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/spec/manifests/commands/data-app.yaml +6 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/spec/manifests/commands/dataset.yaml +104 -1
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/spec/manifests/commands/external-key.yaml +3 -2
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/spec/manifests/commands/file.yaml +7 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/spec/manifests/commands/folder.yaml +6 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/spec/manifests/commands/notification.yaml +4 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/spec/manifests/commands/parameter.yaml +10 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/spec/manifests/commands/project.yaml +21 -2
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/spec/manifests/commands/schedule.yaml +3 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/spec/manifests/commands/skill.yaml +4 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/spec/manifests/commands/snippet.yaml +5 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/spec/manifests/commands/support.yaml +32 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/spec/manifests/commands/template.yaml +3 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/spec/manifests/commands/trash.yaml +2 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/spec/manifests/commands/upgrade.yaml +1 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/spec/manifests/commands/user.yaml +6 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/spec/manifests/commands/view.yaml +170 -3
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/spec/manifests/commands/webhook.yaml +5 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/spec/manifests/commands/workflow.yaml +10 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/spec/manifests/commands/workspace.yaml +14 -1
- mammoth_cli-2.0.88/spec/manifests/edits-target.source.yaml +236 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/spec/manifests/openapi-operations.yaml +39 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/spec/manifests/schema-v1.json +5 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/spec/manifests/sdk-catalog.source.yaml +14 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/spec/manifests/sdk-methods.yaml +41 -5
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/spec/openapi/metadata.json +4 -4
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/spec/openapi/openapi.json +1 -1
- mammoth_cli-2.0.86/mammoth_cli/runtime/dataset_health.py +0 -62
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/.gitignore +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/LICENSE +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/README.md +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/__main__.py +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/app.py +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/bundled_skill/mammoth-cli/SKILL.md +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/bundled_skill/mammoth-cli/references/about-mammoth.md +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/bundled_skill/mammoth-cli/references/auth.md +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/bundled_skill/mammoth-cli/references/capabilities-misc.md +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/bundled_skill/mammoth-cli/references/capabilities.md +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/activity.md +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/addon.md +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/agent.md +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/ai.md +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/annotation.md +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/auth.md +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/automation.md +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/batch.md +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/billing.md +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/browse.md +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/calc.md +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/capability.md +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/client-app.md +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/completion.md +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/config.md +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/connector.md +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/context.md +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dashboard-qa.md +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/data-app.md +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/doctor.md +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/file.md +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/folder.md +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/job.md +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/log.md +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/notification.md +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/parameter.md +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/report.md +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/schedule.md +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/schema.md +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/skill.md +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/snippet.md +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/support.md +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/template.md +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/trash.md +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/upgrade.md +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/user.md +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/version.md +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/view-transform.md +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/webhook.md +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/workflow.md +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/bundled_skill/mammoth-cli/references/handoff.md +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/bundled_skill/mammoth-cli/references/input.md +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/bundled_skill/mammoth-cli/references/jobs-drafts.md +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/bundled_skill/mammoth-cli/references/machine-output.md +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/bundled_skill/mammoth-cli/references/operations.md +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/auth-scope.md +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/cleanup.md +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/end-to-end.md +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/exports.md +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/index.md +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/need-action.md +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/resources.md +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/scheduling.md +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/transforms.md +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/typed-etl-discovery.md +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/bundled_skill/mammoth-cli/references/recovery.md +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/bundled_skill/mammoth-cli/references/report-checklist.md +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/bundled_skill/mammoth-cli/references/retention.md +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/bundled_skill/mammoth-cli/references/safety.md +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/bundled_skill/mammoth-cli/references/task-start.md +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/commands/__init__.py +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/commands/activity.py +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/commands/addon.py +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/commands/agent.py +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/commands/ai.py +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/commands/annotation.py +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/commands/auth.py +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/commands/automation.py +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/commands/batch.py +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/commands/billing.py +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/commands/browse.py +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/commands/calc.py +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/commands/capability.py +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/commands/client_app.py +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/commands/completion.py +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/commands/config.py +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/commands/connector.py +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/commands/context.py +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/commands/data_app.py +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/commands/doctor.py +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/commands/external_key.py +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/commands/file.py +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/commands/folder.py +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/commands/notification.py +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/commands/parameter.py +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/commands/report.py +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/commands/schedule.py +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/commands/skill.py +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/commands/snippet.py +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/commands/support.py +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/commands/template.py +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/commands/trash.py +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/commands/upgrade.py +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/commands/user.py +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/commands/webhook.py +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/commands/workflow.py +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/commands/workspace.py +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/context/__init__.py +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/context/credentials.py +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/context/endpoint.py +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/context/profiles.py +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/context/resolver.py +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/contracts/__init__.py +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/contracts/auth.py +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/embed.py +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/errors/__init__.py +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/errors/envelope.py +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/manifest/__init__.py +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/manifest/loader.py +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/messages/__init__.py +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/output/__init__.py +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/output/normalize.py +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/output/policy.py +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/output/progress.py +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/output/render.py +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/py.typed +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/runtime/__init__.py +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/runtime/confirm.py +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/runtime/dryrun_targets.py +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/runtime/embedded.py +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/runtime/input_loader.py +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/runtime/new_data.py +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/runtime/options.py +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/runtime/parents.py +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/runtime/runlog.py +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/runtime/session.py +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/runtime/strict.py +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/runtime/updates.py +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/runtime/validate.py +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/services/__init__.py +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/services/argspec.py +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/services/coerce.py +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/services/conditions.py +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/services/dashboard_pages.py +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/services/data_quality.py +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/services/dispatch.py +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/services/factory.py +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/services/mapping.py +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/services/openapi_types.py +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/services/protocol.py +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/services/testing.py +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/services/type_system.py +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/skills/__init__.py +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/skills/installer.py +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/skills/steering.py +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/mammoth_cli/testing.py +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/spec/manifests/commands/activity.yaml +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/spec/manifests/commands/browse.yaml +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/spec/manifests/commands/calc.yaml +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/spec/manifests/commands/capability.yaml +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/spec/manifests/commands/doctor.yaml +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/spec/manifests/commands/job.yaml +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/spec/manifests/commands/log.yaml +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/spec/manifests/commands/report.yaml +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/spec/manifests/commands/schema.yaml +0 -0
- {mammoth_cli-2.0.86 → mammoth_cli-2.0.88}/spec/manifests/commands/version.yaml +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: mammoth-cli
|
|
3
|
-
Version: 2.0.
|
|
3
|
+
Version: 2.0.88
|
|
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.8,>=0.7.
|
|
20
|
+
Requires-Dist: mammoth-io<0.8,>=0.7.41
|
|
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,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 579; 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
|
|
|
@@ -22,9 +22,10 @@ Load only the applicable domain file:
|
|
|
22
22
|
- [connector](commands/connector.md) — 22 published commands
|
|
23
23
|
- [context](commands/context.md) — 3 published commands
|
|
24
24
|
- [dashboard-qa](commands/dashboard-qa.md) — 13 published commands
|
|
25
|
-
- [dashboard](commands/dashboard.md) —
|
|
25
|
+
- [dashboard-style](commands/dashboard-style.md) — 10 published commands
|
|
26
|
+
- [dashboard](commands/dashboard.md) — 93 published commands
|
|
26
27
|
- [data-app](commands/data-app.md) — 12 published commands
|
|
27
|
-
- [dataset](commands/dataset.md) —
|
|
28
|
+
- [dataset](commands/dataset.md) — 20 published commands
|
|
28
29
|
- [doctor](commands/doctor.md) — 1 published commands
|
|
29
30
|
- [external-key](commands/external-key.md) — 4 published commands
|
|
30
31
|
- [file](commands/file.md) — 9 published commands
|
|
@@ -46,7 +47,7 @@ Load only the applicable domain file:
|
|
|
46
47
|
- [user](commands/user.md) — 8 published commands
|
|
47
48
|
- [version](commands/version.md) — 1 published commands
|
|
48
49
|
- [view-transform](commands/view-transform.md) — 32 published commands
|
|
49
|
-
- [view](commands/view.md) —
|
|
50
|
+
- [view](commands/view.md) — 90 published commands
|
|
50
51
|
- [webhook](commands/webhook.md) — 7 published commands
|
|
51
52
|
- [workflow](commands/workflow.md) — 16 published commands
|
|
52
53
|
- [workspace](commands/workspace.md) — 20 published commands
|
mammoth_cli-2.0.88/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dashboard-style.md
ADDED
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
# `dashboard-style` commands
|
|
2
|
+
|
|
3
|
+
Every command returns the standard JSON envelope. On nonzero exit, read the error envelope and its `recovery_commands`; do not guess request fields. "Status on release" is joined from `docs/release-capability-matrix.json`: *ran once* means one bounded live run succeeded on the named CLI release, *untried* means nobody has run it, *not supported* means the backend refuses it. When this file disagrees with [capabilities](../capabilities.md) or a recipe, they win. Envelope shapes: [machine output](../machine-output.md).
|
|
4
|
+
|
|
5
|
+
### `dashboard.style.custom.create`
|
|
6
|
+
|
|
7
|
+
Run: `mammoth dashboard style custom create`. Exact input fields: `mammoth schema get dashboard.style.custom.create`.
|
|
8
|
+
|
|
9
|
+
Example: `mammoth dashboard style custom create --input '{"body": {"params": {"signals": {}}}}'`. Placeholders are illustrative; resolve IDs and input from observed reads.
|
|
10
|
+
|
|
11
|
+
Result: `DashboardStyleCustomCreateResult`; mutation `benign_mutation`, confirmation `none`, wait policy `not_async`.
|
|
12
|
+
|
|
13
|
+
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: style. created custom style id=1 with full unredacted colors/font/viz (no tokens field passed) Single invocation only; no error-path or variant coverage.
|
|
14
|
+
|
|
15
|
+
### `dashboard.style.custom.delete`
|
|
16
|
+
|
|
17
|
+
Run: `mammoth dashboard style custom delete`. Exact input fields: `mammoth schema get dashboard.style.custom.delete`.
|
|
18
|
+
|
|
19
|
+
Example: `mammoth dashboard style custom delete resource-123`. Illustrative only: append `--yes` after observing an owned target.
|
|
20
|
+
|
|
21
|
+
Result: `DashboardStyleCustomDeleteResult`; mutation `destructive`, confirmation `prompt_or_yes`, wait policy `not_async`.
|
|
22
|
+
|
|
23
|
+
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: ok. deleted custom style 1 Single invocation only; no error-path or variant coverage.
|
|
24
|
+
|
|
25
|
+
### `dashboard.style.custom.list`
|
|
26
|
+
|
|
27
|
+
Run: `mammoth dashboard style custom list`. Exact input fields: `mammoth schema get dashboard.style.custom.list`.
|
|
28
|
+
|
|
29
|
+
Example: `mammoth dashboard style custom list`. Placeholders are illustrative; resolve IDs and input from observed reads.
|
|
30
|
+
|
|
31
|
+
Result: `DashboardStyleCustomListResult`; mutation `read`, confirmation `none`, wait policy `not_async`.
|
|
32
|
+
|
|
33
|
+
Status on release: ran once on CLI 2.0.12 — Bounded release read succeeded with pinned CLI 1.1.9 in workspace 4; empty custom-style list observed. No Full claim: no non-empty fixture. Also: Dashboard sweep 2026-09-18: exit 0 on release with CLI 2.0.12; result keys: styles. empty custom styles list Sing…
|
|
34
|
+
|
|
35
|
+
### `dashboard.style.custom.update`
|
|
36
|
+
|
|
37
|
+
Run: `mammoth dashboard style custom update`. Exact input fields: `mammoth schema get dashboard.style.custom.update`.
|
|
38
|
+
|
|
39
|
+
Example: `mammoth dashboard style custom update resource-123 --input '{"body": {"params": {"signals": {}}}}'`. Placeholders are illustrative; resolve IDs and input from observed reads.
|
|
40
|
+
|
|
41
|
+
Result: `DashboardStyleCustomUpdateResult`; mutation `benign_mutation`, confirmation `none`, wait policy `not_async`.
|
|
42
|
+
|
|
43
|
+
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: style. renamed custom style 1 Single invocation only; no error-path or variant coverage.
|
|
44
|
+
|
|
45
|
+
### `dashboard.style.default.get`
|
|
46
|
+
|
|
47
|
+
Run: `mammoth dashboard style default get`. Exact input fields: `mammoth schema get dashboard.style.default.get`.
|
|
48
|
+
|
|
49
|
+
Example: `mammoth dashboard style default get`. Placeholders are illustrative; resolve IDs and input from observed reads.
|
|
50
|
+
|
|
51
|
+
Result: `DashboardStyleDefaultGetResult`; mutation `read`, confirmation `none`, wait policy `not_async`.
|
|
52
|
+
|
|
53
|
+
Status on release: ran once on CLI 2.0.14 — dashboard re-verification 2026-09-18: exit 0 on release with CLI 2.0.14. CLI defect fixed, confirmed: returned a real matched body {"styleId":"stone"} instead of raising ValidationError on an unmatched 2xx. Single invocation only.
|
|
54
|
+
|
|
55
|
+
### `dashboard.style.default.set`
|
|
56
|
+
|
|
57
|
+
Run: `mammoth dashboard style default set`. Exact input fields: `mammoth schema get dashboard.style.default.set`.
|
|
58
|
+
|
|
59
|
+
Example: `mammoth dashboard style default set --input '{"body": {"params": {"styleId": "sample"}}}'`. Placeholders are illustrative; resolve IDs and input from observed reads.
|
|
60
|
+
|
|
61
|
+
Result: `DashboardStyleDefaultSetResult`; mutation `benign_mutation`, confirmation `none`, wait policy `not_async`.
|
|
62
|
+
|
|
63
|
+
Status on release: ran once on CLI 2.0.14 — dashboard re-verification 2026-09-18: exit 0 on release with CLI 2.0.14. Set styleId to the exact value read from style default get ("stone"), i.e. a verified no-op restore. Result {"styleId":"stone"}; re-ran style default get afterward and confirmed it still…
|
|
64
|
+
|
|
65
|
+
### `dashboard.style.derive`
|
|
66
|
+
|
|
67
|
+
Run: `mammoth dashboard style derive`. Exact input fields: `mammoth schema get dashboard.style.derive`.
|
|
68
|
+
|
|
69
|
+
Example: `mammoth dashboard style derive --input '{"body": {"params": {"signals": {}}}}'`. Placeholders are illustrative; resolve IDs and input from observed reads.
|
|
70
|
+
|
|
71
|
+
Result: `DashboardStyleDeriveResult`; mutation `benign_mutation`, confirmation `none`, wait policy `not_async`.
|
|
72
|
+
|
|
73
|
+
Status on release: ran once on CLI 2.0.14 — dashboard re-verification 2026-09-18: exit 0 on release with CLI 2.0.14. CLI defect fixed, confirmed: returned a full real styleTokens object (colors, font, viz palette, radius, shadow, etc.) with no '***REDACTED***' placeholders anywhere in the body. Single…
|
|
74
|
+
|
|
75
|
+
### `dashboard.style.extract-brand`
|
|
76
|
+
|
|
77
|
+
Run: `mammoth dashboard style extract-brand`. Exact input fields: `mammoth schema get dashboard.style.extract-brand`.
|
|
78
|
+
|
|
79
|
+
Example: `mammoth dashboard style extract-brand --input '{"body": {"params": {"url": "https://example.com/data.csv"}}}'`. Placeholders are illustrative; resolve IDs and input from observed reads.
|
|
80
|
+
|
|
81
|
+
Result: `DashboardStyleExtractBrandResult`; mutation `benign_mutation`, confirmation `none`, wait policy `always_wait`.
|
|
82
|
+
|
|
83
|
+
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: screenshot, signals. captured screenshot + extracted brand signals (accents/font/ground/primary), no redaction here Single invocation only; no error-path or variant coverage.
|
|
84
|
+
|
|
85
|
+
### `dashboard.style.preset.list`
|
|
86
|
+
|
|
87
|
+
Run: `mammoth dashboard style preset list`. Exact input fields: `mammoth schema get dashboard.style.preset.list`.
|
|
88
|
+
|
|
89
|
+
Example: `mammoth dashboard style preset list`. Placeholders are illustrative; resolve IDs and input from observed reads.
|
|
90
|
+
|
|
91
|
+
Result: `DashboardStylePresetListResult`; mutation `read`, confirmation `none`, wait policy `not_async`.
|
|
92
|
+
|
|
93
|
+
Status on release: ran once on CLI 2.0.12 — Bounded release read succeeded with pinned CLI 1.1.9 in workspace 4; 10 stock presets returned. No Full claim: custom preset fixture not observed. Also: Dashboard sweep 2026-09-18: exit 0 on release with CLI 2.0.12; result keys: presets. returns built-in styl…
|
|
94
|
+
|
|
95
|
+
### `dashboard.style.token.list`
|
|
96
|
+
|
|
97
|
+
Run: `mammoth dashboard style token list`. Exact input fields: `mammoth schema get dashboard.style.token.list`.
|
|
98
|
+
|
|
99
|
+
Example: `mammoth dashboard style token list resource-123`. Placeholders are illustrative; resolve IDs and input from observed reads.
|
|
100
|
+
|
|
101
|
+
Result: `DashboardStyleTokenListResult`; mutation `read`, confirmation `none`, wait policy `not_async`.
|
|
102
|
+
|
|
103
|
+
Status on release: ran once on CLI 1.1.11 — Published PyPI CLI 1.1.11 / SDK 0.7.1 read of observed preset stone returned a redacted token payload. Bounded to one preset and redacted semantics; not Full. Dashboard sweep 2026-09-18 on release observed cli_error: HTTP 200 but result is tokens='***REDACTED…
|
|
@@ -342,6 +342,36 @@ Result: `DashboardFigureIntentResult`; mutation `benign_mutation`, confirmation
|
|
|
342
342
|
|
|
343
343
|
Status on release: ran once on CLI 2.0.14 — dashboard re-verification 2026-09-18: exit 0 on release with CLI 2.0.14. CLI defect fixed, confirmed: returned a full matched structured body ({"added":{...},"kind":"bar","spec":{...},"intentApplied":true,...}) instead of raising ValidationError on an unmatch…
|
|
344
344
|
|
|
345
|
+
### `dashboard.filter.add`
|
|
346
|
+
|
|
347
|
+
Run: `mammoth dashboard filter add`. Exact input fields: `mammoth schema get dashboard.filter.add`.
|
|
348
|
+
|
|
349
|
+
Example: `mammoth dashboard filter add 123 --input '{"field": "sample"}'`. Placeholders are illustrative; resolve IDs and input from observed reads.
|
|
350
|
+
|
|
351
|
+
Result: `DashboardFilterResult`; mutation `benign_mutation`, confirmation `none`, wait policy `not_async`.
|
|
352
|
+
|
|
353
|
+
Status on release: untried; no live run recorded.
|
|
354
|
+
|
|
355
|
+
### `dashboard.filter.list`
|
|
356
|
+
|
|
357
|
+
Run: `mammoth dashboard filter list`. Exact input fields: `mammoth schema get dashboard.filter.list`.
|
|
358
|
+
|
|
359
|
+
Example: `mammoth dashboard filter list 123`. Placeholders are illustrative; resolve IDs and input from observed reads.
|
|
360
|
+
|
|
361
|
+
Result: `DashboardFilterResult`; mutation `read`, confirmation `none`, wait policy `not_async`.
|
|
362
|
+
|
|
363
|
+
Status on release: untried; no live run recorded.
|
|
364
|
+
|
|
365
|
+
### `dashboard.filter.remove`
|
|
366
|
+
|
|
367
|
+
Run: `mammoth dashboard filter remove`. Exact input fields: `mammoth schema get dashboard.filter.remove`.
|
|
368
|
+
|
|
369
|
+
Example: `mammoth dashboard filter remove 123 --input '{"field": "sample"}'`. Placeholders are illustrative; resolve IDs and input from observed reads.
|
|
370
|
+
|
|
371
|
+
Result: `DashboardFilterResult`; mutation `benign_mutation`, confirmation `none`, wait policy `not_async`.
|
|
372
|
+
|
|
373
|
+
Status on release: untried; no live run recorded.
|
|
374
|
+
|
|
345
375
|
### `dashboard.get`
|
|
346
376
|
|
|
347
377
|
Run: `mammoth dashboard get`. Exact input fields: `mammoth schema get dashboard.get`.
|
|
@@ -650,106 +680,6 @@ Result: `DashboardSourceListResult`; mutation `read`, confirmation `none`, wait
|
|
|
650
680
|
|
|
651
681
|
Status on release: observed blocker — blocker; still broken, not one of the 11 CLI-fixed commands. Re-check before relying on it.
|
|
652
682
|
|
|
653
|
-
### `dashboard.style.custom.create`
|
|
654
|
-
|
|
655
|
-
Run: `mammoth dashboard style custom create`. Exact input fields: `mammoth schema get dashboard.style.custom.create`.
|
|
656
|
-
|
|
657
|
-
Example: `mammoth dashboard style custom create --input '{"body": {"params": {"signals": {}}}}'`. Placeholders are illustrative; resolve IDs and input from observed reads.
|
|
658
|
-
|
|
659
|
-
Result: `DashboardStyleCustomCreateResult`; mutation `benign_mutation`, confirmation `none`, wait policy `not_async`.
|
|
660
|
-
|
|
661
|
-
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: style. created custom style id=1 with full unredacted colors/font/viz (no tokens field passed) Single invocation only; no error-path or variant coverage.
|
|
662
|
-
|
|
663
|
-
### `dashboard.style.custom.delete`
|
|
664
|
-
|
|
665
|
-
Run: `mammoth dashboard style custom delete`. Exact input fields: `mammoth schema get dashboard.style.custom.delete`.
|
|
666
|
-
|
|
667
|
-
Example: `mammoth dashboard style custom delete resource-123`. Illustrative only: append `--yes` after observing an owned target.
|
|
668
|
-
|
|
669
|
-
Result: `DashboardStyleCustomDeleteResult`; mutation `destructive`, confirmation `prompt_or_yes`, wait policy `not_async`.
|
|
670
|
-
|
|
671
|
-
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: ok. deleted custom style 1 Single invocation only; no error-path or variant coverage.
|
|
672
|
-
|
|
673
|
-
### `dashboard.style.custom.list`
|
|
674
|
-
|
|
675
|
-
Run: `mammoth dashboard style custom list`. Exact input fields: `mammoth schema get dashboard.style.custom.list`.
|
|
676
|
-
|
|
677
|
-
Example: `mammoth dashboard style custom list`. Placeholders are illustrative; resolve IDs and input from observed reads.
|
|
678
|
-
|
|
679
|
-
Result: `DashboardStyleCustomListResult`; mutation `read`, confirmation `none`, wait policy `not_async`.
|
|
680
|
-
|
|
681
|
-
Status on release: ran once on CLI 2.0.12 — Bounded release read succeeded with pinned CLI 1.1.9 in workspace 4; empty custom-style list observed. No Full claim: no non-empty fixture. Also: Dashboard sweep 2026-09-18: exit 0 on release with CLI 2.0.12; result keys: styles. empty custom styles list Sing…
|
|
682
|
-
|
|
683
|
-
### `dashboard.style.custom.update`
|
|
684
|
-
|
|
685
|
-
Run: `mammoth dashboard style custom update`. Exact input fields: `mammoth schema get dashboard.style.custom.update`.
|
|
686
|
-
|
|
687
|
-
Example: `mammoth dashboard style custom update resource-123 --input '{"body": {"params": {"signals": {}}}}'`. Placeholders are illustrative; resolve IDs and input from observed reads.
|
|
688
|
-
|
|
689
|
-
Result: `DashboardStyleCustomUpdateResult`; mutation `benign_mutation`, confirmation `none`, wait policy `not_async`.
|
|
690
|
-
|
|
691
|
-
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: style. renamed custom style 1 Single invocation only; no error-path or variant coverage.
|
|
692
|
-
|
|
693
|
-
### `dashboard.style.default.get`
|
|
694
|
-
|
|
695
|
-
Run: `mammoth dashboard style default get`. Exact input fields: `mammoth schema get dashboard.style.default.get`.
|
|
696
|
-
|
|
697
|
-
Example: `mammoth dashboard style default get`. Placeholders are illustrative; resolve IDs and input from observed reads.
|
|
698
|
-
|
|
699
|
-
Result: `DashboardStyleDefaultGetResult`; mutation `read`, confirmation `none`, wait policy `not_async`.
|
|
700
|
-
|
|
701
|
-
Status on release: ran once on CLI 2.0.14 — dashboard re-verification 2026-09-18: exit 0 on release with CLI 2.0.14. CLI defect fixed, confirmed: returned a real matched body {"styleId":"stone"} instead of raising ValidationError on an unmatched 2xx. Single invocation only.
|
|
702
|
-
|
|
703
|
-
### `dashboard.style.default.set`
|
|
704
|
-
|
|
705
|
-
Run: `mammoth dashboard style default set`. Exact input fields: `mammoth schema get dashboard.style.default.set`.
|
|
706
|
-
|
|
707
|
-
Example: `mammoth dashboard style default set --input '{"body": {"params": {"styleId": "sample"}}}'`. Placeholders are illustrative; resolve IDs and input from observed reads.
|
|
708
|
-
|
|
709
|
-
Result: `DashboardStyleDefaultSetResult`; mutation `benign_mutation`, confirmation `none`, wait policy `not_async`.
|
|
710
|
-
|
|
711
|
-
Status on release: ran once on CLI 2.0.14 — dashboard re-verification 2026-09-18: exit 0 on release with CLI 2.0.14. Set styleId to the exact value read from style default get ("stone"), i.e. a verified no-op restore. Result {"styleId":"stone"}; re-ran style default get afterward and confirmed it still…
|
|
712
|
-
|
|
713
|
-
### `dashboard.style.derive`
|
|
714
|
-
|
|
715
|
-
Run: `mammoth dashboard style derive`. Exact input fields: `mammoth schema get dashboard.style.derive`.
|
|
716
|
-
|
|
717
|
-
Example: `mammoth dashboard style derive --input '{"body": {"params": {"signals": {}}}}'`. Placeholders are illustrative; resolve IDs and input from observed reads.
|
|
718
|
-
|
|
719
|
-
Result: `DashboardStyleDeriveResult`; mutation `benign_mutation`, confirmation `none`, wait policy `not_async`.
|
|
720
|
-
|
|
721
|
-
Status on release: ran once on CLI 2.0.14 — dashboard re-verification 2026-09-18: exit 0 on release with CLI 2.0.14. CLI defect fixed, confirmed: returned a full real styleTokens object (colors, font, viz palette, radius, shadow, etc.) with no '***REDACTED***' placeholders anywhere in the body. Single…
|
|
722
|
-
|
|
723
|
-
### `dashboard.style.extract-brand`
|
|
724
|
-
|
|
725
|
-
Run: `mammoth dashboard style extract-brand`. Exact input fields: `mammoth schema get dashboard.style.extract-brand`.
|
|
726
|
-
|
|
727
|
-
Example: `mammoth dashboard style extract-brand --input '{"body": {"params": {"url": "https://example.com/data.csv"}}}'`. Placeholders are illustrative; resolve IDs and input from observed reads.
|
|
728
|
-
|
|
729
|
-
Result: `DashboardStyleExtractBrandResult`; mutation `benign_mutation`, confirmation `none`, wait policy `always_wait`.
|
|
730
|
-
|
|
731
|
-
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: screenshot, signals. captured screenshot + extracted brand signals (accents/font/ground/primary), no redaction here Single invocation only; no error-path or variant coverage.
|
|
732
|
-
|
|
733
|
-
### `dashboard.style.preset.list`
|
|
734
|
-
|
|
735
|
-
Run: `mammoth dashboard style preset list`. Exact input fields: `mammoth schema get dashboard.style.preset.list`.
|
|
736
|
-
|
|
737
|
-
Example: `mammoth dashboard style preset list`. Placeholders are illustrative; resolve IDs and input from observed reads.
|
|
738
|
-
|
|
739
|
-
Result: `DashboardStylePresetListResult`; mutation `read`, confirmation `none`, wait policy `not_async`.
|
|
740
|
-
|
|
741
|
-
Status on release: ran once on CLI 2.0.12 — Bounded release read succeeded with pinned CLI 1.1.9 in workspace 4; 10 stock presets returned. No Full claim: custom preset fixture not observed. Also: Dashboard sweep 2026-09-18: exit 0 on release with CLI 2.0.12; result keys: presets. returns built-in styl…
|
|
742
|
-
|
|
743
|
-
### `dashboard.style.token.list`
|
|
744
|
-
|
|
745
|
-
Run: `mammoth dashboard style token list`. Exact input fields: `mammoth schema get dashboard.style.token.list`.
|
|
746
|
-
|
|
747
|
-
Example: `mammoth dashboard style token list resource-123`. Placeholders are illustrative; resolve IDs and input from observed reads.
|
|
748
|
-
|
|
749
|
-
Result: `DashboardStyleTokenListResult`; mutation `read`, confirmation `none`, wait policy `not_async`.
|
|
750
|
-
|
|
751
|
-
Status on release: ran once on CLI 1.1.11 — Published PyPI CLI 1.1.11 / SDK 0.7.1 read of observed preset stone returned a redacted token payload. Bounded to one preset and redacted semantics; not Full. Dashboard sweep 2026-09-18 on release observed cli_error: HTTP 200 but result is tokens='***REDACTED…
|
|
752
|
-
|
|
753
683
|
### `dashboard.suggestion.list`
|
|
754
684
|
|
|
755
685
|
Run: `mammoth dashboard suggestion list`. Exact input fields: `mammoth schema get dashboard.suggestion.list`.
|
|
@@ -132,6 +132,26 @@ Result: `DatasetGetResult`; mutation `read`, confirmation `none`, wait policy `n
|
|
|
132
132
|
|
|
133
133
|
Status on release: ran once on CLI 2.0.18 — golden-data check 2026-09-19: exit 0 on release with CLI 2.0.18. Single invocation only.
|
|
134
134
|
|
|
135
|
+
### `dataset.interpretation.confirm`
|
|
136
|
+
|
|
137
|
+
Run: `mammoth dataset interpretation confirm`. Exact input fields: `mammoth schema get dataset.interpretation.confirm`.
|
|
138
|
+
|
|
139
|
+
Example: `mammoth dataset interpretation confirm 123`. Placeholders are illustrative; resolve IDs and input from observed reads.
|
|
140
|
+
|
|
141
|
+
Result: `DatasetInterpretationConfirmResult`; mutation `benign_mutation`, confirmation `none`, wait policy `not_async`.
|
|
142
|
+
|
|
143
|
+
Status on release: untried; no live run recorded.
|
|
144
|
+
|
|
145
|
+
### `dataset.interpretation.preview`
|
|
146
|
+
|
|
147
|
+
Run: `mammoth dataset interpretation preview`. Exact input fields: `mammoth schema get dataset.interpretation.preview`.
|
|
148
|
+
|
|
149
|
+
Example: `mammoth dataset interpretation preview 123`. Placeholders are illustrative; resolve IDs and input from observed reads.
|
|
150
|
+
|
|
151
|
+
Result: `DatasetInterpretationPreviewResult`; mutation `benign_mutation`, confirmation `none`, wait policy `not_async`.
|
|
152
|
+
|
|
153
|
+
Status on release: untried; no live run recorded.
|
|
154
|
+
|
|
135
155
|
### `dataset.list`
|
|
136
156
|
|
|
137
157
|
Run: `mammoth dataset list`. Exact input fields: `mammoth schema get dataset.list`.
|
|
@@ -6,7 +6,9 @@ Every command returns the standard JSON envelope. On nonzero exit, read the erro
|
|
|
6
6
|
|
|
7
7
|
Run: `mammoth external-key create`. Exact input fields: `mammoth schema get external-key.create`.
|
|
8
8
|
|
|
9
|
-
Example: `mammoth external-key create --input
|
|
9
|
+
Example: `mammoth external-key create --input /private/path/request.json`. Illustrative only: append `--yes --confirm <EXACT_TARGET>` after observing the target.
|
|
10
|
+
|
|
11
|
+
Secret fields: pass the body as `--input FILE` (mode 0600); never inline.
|
|
10
12
|
|
|
11
13
|
Result: `ExternalKeyCreateResult`; mutation `high_impact`, confirmation `confirm_target`, wait policy `not_async`.
|
|
12
14
|
|
|
@@ -26,7 +26,7 @@ Status on release: ran once on CLI 2.0.15 — re-verification 2026-09-18: exit 0
|
|
|
26
26
|
|
|
27
27
|
Run: `mammoth project check`. Exact input fields: `mammoth schema get project.check`.
|
|
28
28
|
|
|
29
|
-
Example: `mammoth project check 123`. Placeholders are illustrative; resolve IDs and input from observed reads.
|
|
29
|
+
Example: `mammoth project check 123 456`. Placeholders are illustrative; resolve IDs and input from observed reads.
|
|
30
30
|
|
|
31
31
|
Result: `ProjectCheckResult`; mutation `read`, confirmation `none`, wait policy `not_async`.
|
|
32
32
|
|
|
@@ -252,6 +252,16 @@ Result: `ViewDataGetResult`; mutation `read`, confirmation `none`, wait policy `
|
|
|
252
252
|
|
|
253
253
|
Status on release: ran once on CLI 2.0.28 — ILG simulation 2026-09-19: exit 0 on release with CLI 2.0.28. Paged reads (limit up to 500) used for every value check; envelope data.data rows keyed by display name. Single invocation only.
|
|
254
254
|
|
|
255
|
+
### `view.data.profile`
|
|
256
|
+
|
|
257
|
+
Run: `mammoth view data profile`. Exact input fields: `mammoth schema get view.data.profile`.
|
|
258
|
+
|
|
259
|
+
Example: `mammoth view data profile 123 --input '{"target": "Churn"}'`. Placeholders are illustrative; resolve IDs and input from observed reads.
|
|
260
|
+
|
|
261
|
+
Result: `ViewDataProfileResult`; mutation `read`, confirmation `none`, wait policy `not_async`.
|
|
262
|
+
|
|
263
|
+
Status on release: untried; no live run recorded.
|
|
264
|
+
|
|
255
265
|
### `view.data.query`
|
|
256
266
|
|
|
257
267
|
Run: `mammoth view data query`. Exact input fields: `mammoth schema get view.data.query`.
|
|
@@ -138,7 +138,7 @@ Status on release: untried; no live run recorded.
|
|
|
138
138
|
|
|
139
139
|
Run: `mammoth workspace user add`. Exact input fields: `mammoth schema get workspace.user.add`.
|
|
140
140
|
|
|
141
|
-
Example: `mammoth workspace user add --
|
|
141
|
+
Example: `mammoth workspace user add --input '{"email_ids": ["analyst@example.com"]}' --yes`. Illustrative only: append `--yes` after observing an owned target.
|
|
142
142
|
|
|
143
143
|
Result: `WorkspaceUserAddResult`; mutation `benign_mutation`, confirmation `yes_always`, wait policy `not_async`.
|
|
144
144
|
|
|
@@ -3,8 +3,11 @@
|
|
|
3
3
|
`dashboard create` (the legacy AI-generation engine) does not exist as a
|
|
4
4
|
command: it has no handler in current apiv2 (always 404s; historically HTTP
|
|
5
5
|
409 `4DASH012 DASHBOARD_LEGACY_CREATION_RETIRED`). Build a board from one
|
|
6
|
-
sentence with `v3 generate`, and change it with `chat edit
|
|
7
|
-
|
|
6
|
+
sentence with `v3 generate`, and change it with `chat edit`. Author or edit the
|
|
7
|
+
canvas yourself (`create-blank`, `canvas get` then `canvas save`, `pages add`)
|
|
8
|
+
for what a sentence cannot say exactly: units, hiding a built-in tile or
|
|
9
|
+
insight, an exact layout. `dashboard filter add` puts a filter control on a
|
|
10
|
+
board (below).
|
|
8
11
|
`dashboard source list` is an observed blocker on release (see
|
|
9
12
|
capabilities); verify the view binding with `dashboard get DASHBOARD_ID`
|
|
10
13
|
(`data.sources`) instead.
|
|
@@ -19,6 +22,11 @@ mammoth dashboard get DASHBOARD_ID
|
|
|
19
22
|
`chat edit` returns `changed` and a one-line `message`. Quote one number from
|
|
20
23
|
the board before you report it done.
|
|
21
24
|
|
|
25
|
+
Before you say anything about a board that already exists (what a chart shows,
|
|
26
|
+
its numbers, the period it covers), run `dashboard get DASHBOARD_ID`: its
|
|
27
|
+
`values` carry every KPI card's and tile's number and the `period` it counts.
|
|
28
|
+
Answer from those, never from an earlier turn.
|
|
29
|
+
|
|
22
30
|
Discover page/widget/publish routes and verify the binding, draft/published
|
|
23
31
|
data and terminal jobs. Use only returned IDs and schema confirmation policy;
|
|
24
32
|
do not invent dashboard JSON or opaque task specs.
|
|
@@ -77,6 +85,62 @@ names it. A new page that got no charts is removed, and
|
|
|
77
85
|
`data.chart_check.removed_pages` lists it. Add a chart of a different kind
|
|
78
86
|
(`hbar`, `line`, `table`) for that page.
|
|
79
87
|
|
|
88
|
+
## "Per region", "per month", "for each X": one board and a filter control
|
|
89
|
+
|
|
90
|
+
A request for a board "per <dimension>" (per region, per month, per rep, by
|
|
91
|
+
status) is ONE board with a **filter control** on that column: the viewer picks
|
|
92
|
+
the value. Do not build a copy of the board for each value. Build the board
|
|
93
|
+
once, then add the control:
|
|
94
|
+
|
|
95
|
+
```bash
|
|
96
|
+
mammoth dashboard filter add DASHBOARD_ID --input '{"field": "Region"}'
|
|
97
|
+
mammoth dashboard filter list DASHBOARD_ID
|
|
98
|
+
mammoth dashboard filter remove DASHBOARD_ID --input '{"field": "Region"}'
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
`field` is a column of the board's data. `control` is optional: leave it out
|
|
102
|
+
and the column's type picks one (a category gets a selection list, a number or
|
|
103
|
+
a date gets a range). Set it to choose: `dropdown`, `chips`, `multi` or
|
|
104
|
+
`search` for a category, `range` for a number or a date, `motion` for a date
|
|
105
|
+
that plays over time. `label` is the text the viewer sees, and `default` (a
|
|
106
|
+
list of values) is what is selected when the board opens:
|
|
107
|
+
`--input '{"field": "Region", "control": "dropdown", "label": "Region", "default": ["North"]}'`.
|
|
108
|
+
A second `add` on the same column replaces the first. The command refuses a
|
|
109
|
+
column the board does not have (and names the columns it has) and a control
|
|
110
|
+
the column's type cannot take. Its result carries the declared `filters` and a
|
|
111
|
+
`bake_job_id`; `dashboard filter list` reads them back. Say "per month" the same
|
|
112
|
+
way: a filter on the date column with `range`, or `dashboard chat edit` for a
|
|
113
|
+
chart that groups by month (`date_bucket`).
|
|
114
|
+
|
|
115
|
+
Build only the board you were asked for. If the user wants the board for one
|
|
116
|
+
region only, that is the control's `default`, not a second board.
|
|
117
|
+
|
|
118
|
+
## Hide a built-in tile or insight
|
|
119
|
+
|
|
120
|
+
A board's built-in parts (Key insights, the KPI strip, the breakdown, trend and
|
|
121
|
+
table tiles) re-derive from the data, so they cannot be deleted; the product's
|
|
122
|
+
"Remove" hides them: it adds the tile's key to `hidden` on the page. Do the
|
|
123
|
+
same with `canvas save`: read the canvas, add the key to the page's `hidden`,
|
|
124
|
+
write it back.
|
|
125
|
+
|
|
126
|
+
```bash
|
|
127
|
+
mammoth dashboard canvas get DASHBOARD_ID > canvas.json # data.canvas is the object to edit
|
|
128
|
+
# pages[0].hidden = ["summary"] Key insights tile
|
|
129
|
+
# ["kpis"] the whole KPI strip
|
|
130
|
+
# ["breakdown", "mix", "secondary", "trend", "table"] the other built-in tiles
|
|
131
|
+
# canvas.hidden (no pages) is the same list on a canvas without pages
|
|
132
|
+
mammoth dashboard canvas save DASHBOARD_ID --input '{"body": {"params": {"canvas": <edited data.canvas>}}}'
|
|
133
|
+
mammoth job wait BAKE_JOB_ID # data.bake_job_id from the save
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
`hidden` sits on the page you mean (`pages[i]`, the page the tile is on), not
|
|
137
|
+
on the canvas root, when the canvas has `pages`. Keep the keys already in the
|
|
138
|
+
list. A single KPI card is removed by taking its entry out of
|
|
139
|
+
`pages[i].focus.kpis`. To hide one insight rather than the whole tile, put its
|
|
140
|
+
tag in `insights.hide` (tags: `leader`, `momentum`, `gap`, `laggard`,
|
|
141
|
+
`concentration`, `secondary`, `peak`, `quality`, `spread`). Read the board back
|
|
142
|
+
with `dashboard canvas get` and check the key is in `hidden`.
|
|
143
|
+
|
|
80
144
|
## Put the money on the board
|
|
81
145
|
|
|
82
146
|
If the data has money (a price, an amount, revenue or cost), the dashboard
|
|
@@ -10,6 +10,7 @@ SDK method named by the command's reviewed manifest ``sdk_symbol``.
|
|
|
10
10
|
|
|
11
11
|
from __future__ import annotations
|
|
12
12
|
|
|
13
|
+
from collections.abc import Callable
|
|
13
14
|
from pathlib import Path
|
|
14
15
|
from typing import Any, Literal, cast
|
|
15
16
|
|
|
@@ -39,7 +40,14 @@ from mammoth_cli.runtime.confirm import (
|
|
|
39
40
|
from mammoth_cli.runtime.invocation import Invocation
|
|
40
41
|
from mammoth_cli.runtime.session import open_service, require_project, resolved_project
|
|
41
42
|
from mammoth_cli.services.argspec import arg_spec
|
|
43
|
+
from mammoth_cli.services.board_values import board_values, dashboard_link
|
|
42
44
|
from mammoth_cli.services.command_contract import bind_command_inputs
|
|
45
|
+
from mammoth_cli.services.dashboard_filters import (
|
|
46
|
+
check_filter,
|
|
47
|
+
declared,
|
|
48
|
+
with_filter,
|
|
49
|
+
without_filter,
|
|
50
|
+
)
|
|
43
51
|
from mammoth_cli.services.dashboard_pages import check_added_pages
|
|
44
52
|
from mammoth_cli.services.dashboard_review import (
|
|
45
53
|
CANVAS_GET,
|
|
@@ -368,10 +376,16 @@ def dashboard_tags_merge(invocation: Invocation) -> HandlerResult:
|
|
|
368
376
|
|
|
369
377
|
|
|
370
378
|
def dashboard_get(invocation: Invocation) -> HandlerResult:
|
|
371
|
-
"""Get one dashboard by id.
|
|
379
|
+
"""Get one dashboard by id, with each KPI card's and tile's number and period.
|
|
380
|
+
|
|
381
|
+
A question about an existing board is answered from what it shows, so the
|
|
382
|
+
read carries the numbers, not only the definitions (UQA-RT10-02).
|
|
383
|
+
"""
|
|
372
384
|
dashboard_id = _require_int_positional(invocation, "dashboard id")
|
|
373
385
|
with open_service(invocation) as (service, auth):
|
|
374
386
|
data = service.call(_symbol(invocation), dashboard_id=dashboard_id)
|
|
387
|
+
if not invocation.readback:
|
|
388
|
+
data = _with_board_values(service, auth, {"dashboard_id": dashboard_id}, data)
|
|
375
389
|
return data, _meta(invocation, auth.workspace_id)
|
|
376
390
|
|
|
377
391
|
|
|
@@ -670,9 +684,38 @@ def generated_dashboard(invocation: Invocation) -> HandlerResult:
|
|
|
670
684
|
data = check_added_pages(service, positionals["dashboard_id"], requested, data)
|
|
671
685
|
if invocation.command_id in _REVIEWED_COMMANDS:
|
|
672
686
|
data = _with_deliverable_check(invocation, service, auth, positionals, data)
|
|
687
|
+
if invocation.command_id in _VALUED_COMMANDS:
|
|
688
|
+
data = _with_board_values(service, auth, positionals, data)
|
|
673
689
|
return data, _meta(invocation, auth.workspace_id)
|
|
674
690
|
|
|
675
691
|
|
|
692
|
+
#: Board-building steps whose result carries the evaluated card/tile numbers.
|
|
693
|
+
_VALUED_COMMANDS = frozenset({"dashboard.v3.generate", "dashboard.chat.edit"})
|
|
694
|
+
|
|
695
|
+
|
|
696
|
+
def _with_board_values(service: Any, auth: Any, positionals: dict[str, Any], data: Any) -> Any:
|
|
697
|
+
"""Add ``dashboard_link`` and each KPI card's and tile's evaluated number.
|
|
698
|
+
|
|
699
|
+
The result of a build/edit is definitions; the agent must see the numbers
|
|
700
|
+
it is about to report (a rate that reads 21.9% where the data says 14.9%).
|
|
701
|
+
"""
|
|
702
|
+
data = _dump_model(data)
|
|
703
|
+
if not isinstance(data, dict):
|
|
704
|
+
return data
|
|
705
|
+
dashboard_id = positionals.get("dashboard_id") or data.get("id") or data.get("dashboard_id")
|
|
706
|
+
if not isinstance(dashboard_id, int):
|
|
707
|
+
return {**data, "values": {"unavailable": "the result names no dashboard id"}}
|
|
708
|
+
return {
|
|
709
|
+
**data,
|
|
710
|
+
"dashboard_link": dashboard_link(auth.base_url, auth.workspace_id, dashboard_id),
|
|
711
|
+
"values": board_values(service, dashboard_id),
|
|
712
|
+
}
|
|
713
|
+
|
|
714
|
+
|
|
715
|
+
def _dump_model(value: Any) -> Any:
|
|
716
|
+
return value.model_dump(mode="json") if hasattr(value, "model_dump") else value
|
|
717
|
+
|
|
718
|
+
|
|
676
719
|
#: Authoring steps whose result carries ``deliverable_check``.
|
|
677
720
|
_REVIEWED_COMMANDS = frozenset(
|
|
678
721
|
{"dashboard.create-blank", "dashboard.canvas.save", "dashboard.pages.add"}
|
|
@@ -741,6 +784,62 @@ def _with_deliverable_check(
|
|
|
741
784
|
return data
|
|
742
785
|
|
|
743
786
|
|
|
787
|
+
_CANVAS_SAVE = "mammoth.api.dashboards.DashboardsAPI.canvas_save"
|
|
788
|
+
_FILTER_KEYS = ("field", "control", "label", "default")
|
|
789
|
+
|
|
790
|
+
|
|
791
|
+
def _edit_filters(
|
|
792
|
+
invocation: Invocation, edit: Callable[[dict[str, Any]], dict[str, Any]]
|
|
793
|
+
) -> HandlerResult:
|
|
794
|
+
"""Read the draft canvas, apply ``edit`` to the read, save it, and return the filters."""
|
|
795
|
+
dashboard_id = _require_int_positional(invocation, "dashboard id")
|
|
796
|
+
with open_service(invocation) as (service, auth):
|
|
797
|
+
current = _dump_model(service.call(CANVAS_GET, dashboard_id=dashboard_id))
|
|
798
|
+
canvas = edit(current)
|
|
799
|
+
saved = _dump_model(
|
|
800
|
+
service.call(
|
|
801
|
+
_CANVAS_SAVE,
|
|
802
|
+
dashboard_id=dashboard_id,
|
|
803
|
+
body={"params": {"canvas": canvas, "base_sequence": current["meta"]["sequence"]}},
|
|
804
|
+
)
|
|
805
|
+
)
|
|
806
|
+
result = {
|
|
807
|
+
"dashboard_id": dashboard_id,
|
|
808
|
+
"filters": declared(canvas),
|
|
809
|
+
"sequence": saved.get("sequence"),
|
|
810
|
+
"bake_job_id": saved.get("bake_job_id"),
|
|
811
|
+
}
|
|
812
|
+
return result, _meta(invocation, auth.workspace_id)
|
|
813
|
+
|
|
814
|
+
|
|
815
|
+
def dashboard_filter_add(invocation: Invocation) -> HandlerResult:
|
|
816
|
+
"""Add (or replace) the filter control on one column of a board."""
|
|
817
|
+
document = _bound_document(invocation)
|
|
818
|
+
_require_field(document, "field")
|
|
819
|
+
entry = {key: document[key] for key in _FILTER_KEYS if document.get(key) is not None}
|
|
820
|
+
|
|
821
|
+
def edit(current: dict[str, Any]) -> dict[str, Any]:
|
|
822
|
+
check_filter(current, entry)
|
|
823
|
+
return with_filter(current["canvas"], entry)
|
|
824
|
+
|
|
825
|
+
return _edit_filters(invocation, edit)
|
|
826
|
+
|
|
827
|
+
|
|
828
|
+
def dashboard_filter_remove(invocation: Invocation) -> HandlerResult:
|
|
829
|
+
"""Remove the filter control on one column of a board."""
|
|
830
|
+
field = str(_require_field(_bound_document(invocation), "field"))
|
|
831
|
+
return _edit_filters(invocation, lambda current: without_filter(current["canvas"], field))
|
|
832
|
+
|
|
833
|
+
|
|
834
|
+
def dashboard_filter_list(invocation: Invocation) -> HandlerResult:
|
|
835
|
+
"""List the filter controls a board declares."""
|
|
836
|
+
dashboard_id = _require_int_positional(invocation, "dashboard id")
|
|
837
|
+
with open_service(invocation) as (service, auth):
|
|
838
|
+
current = _dump_model(service.call(CANVAS_GET, dashboard_id=dashboard_id))
|
|
839
|
+
result = {"dashboard_id": dashboard_id, "filters": declared(current["canvas"])}
|
|
840
|
+
return result, _meta(invocation, auth.workspace_id)
|
|
841
|
+
|
|
842
|
+
|
|
744
843
|
def dashboard_assess_twb(invocation: Invocation) -> HandlerResult:
|
|
745
844
|
"""Assess a local Tableau workbook through the SDK multipart seam."""
|
|
746
845
|
file_path = _require_str_positional(invocation, "file")
|