mammoth-cli 2.0.38__tar.gz → 2.0.40__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.38 → mammoth_cli-2.0.40}/PKG-INFO +2 -2
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/__init__.py +1 -1
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/bundled_skill/mammoth-cli/SKILL.md +25 -9
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/bundled_skill/mammoth-cli/references/about-mammoth.md +1 -1
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/bundled_skill/mammoth-cli/references/capabilities-misc.md +1 -1
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/bundled_skill/mammoth-cli/references/capabilities.md +2 -2
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/view.md +33 -33
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/bundled_skill/mammoth-cli/references/input.md +1 -1
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/dashboards.md +27 -1
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/end-to-end.md +5 -2
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/transforms.md +42 -3
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/bundled_skill/mammoth-cli/references/task-start.md +4 -2
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/commands/dashboard.py +4 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/commands/schema.py +1 -1
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/commands/view.py +175 -14
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/commands/view_ops.py +112 -6
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/runtime/strict.py +14 -1
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/services/command_contract.py +4 -1
- mammoth_cli-2.0.40/mammoth_cli/services/dashboard_pages.py +136 -0
- mammoth_cli-2.0.40/mammoth_cli/services/data_quality.py +136 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/pyproject.toml +2 -2
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/spec/manifests/commands/view.yaml +3 -2
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/.gitignore +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/LICENSE +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/README.md +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/__main__.py +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/app.py +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/bundled_skill/mammoth-cli/references/auth.md +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/bundled_skill/mammoth-cli/references/command-index.md +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/activity.md +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/addon.md +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/agent.md +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/ai.md +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/annotation.md +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/auth.md +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/automation.md +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/batch.md +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/billing.md +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/browse.md +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/capability.md +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/client-app.md +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/completion.md +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/config.md +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/connector.md +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/context.md +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dashboard.md +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/data-app.md +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dataset.md +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/doctor.md +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/external-key.md +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/file.md +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/folder.md +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/job.md +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/log.md +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/notification.md +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/parameter.md +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/project.md +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/report.md +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/schedule.md +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/schema.md +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/skill.md +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/snippet.md +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/support.md +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/template.md +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/trash.md +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/upgrade.md +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/user.md +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/version.md +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/webhook.md +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/workflow.md +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/workspace.md +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/bundled_skill/mammoth-cli/references/handoff.md +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/bundled_skill/mammoth-cli/references/jobs-drafts.md +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/bundled_skill/mammoth-cli/references/machine-output.md +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/bundled_skill/mammoth-cli/references/operations.md +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/auth-scope.md +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/cleanup.md +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/exports.md +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/index.md +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/need-action.md +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/resources.md +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/typed-etl-discovery.md +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/bundled_skill/mammoth-cli/references/recovery.md +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/bundled_skill/mammoth-cli/references/report-checklist.md +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/bundled_skill/mammoth-cli/references/retention.md +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/bundled_skill/mammoth-cli/references/safety.md +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/commands/__init__.py +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/commands/activity.py +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/commands/addon.py +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/commands/agent.py +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/commands/ai.py +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/commands/annotation.py +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/commands/auth.py +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/commands/automation.py +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/commands/batch.py +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/commands/billing.py +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/commands/browse.py +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/commands/capability.py +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/commands/client_app.py +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/commands/completion.py +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/commands/config.py +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/commands/connector.py +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/commands/context.py +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/commands/data_app.py +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/commands/dataset.py +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/commands/doctor.py +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/commands/external_key.py +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/commands/file.py +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/commands/folder.py +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/commands/job.py +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/commands/notification.py +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/commands/parameter.py +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/commands/project.py +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/commands/registry.py +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/commands/report.py +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/commands/schedule.py +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/commands/skill.py +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/commands/snippet.py +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/commands/support.py +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/commands/template.py +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/commands/trash.py +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/commands/upgrade.py +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/commands/user.py +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/commands/webhook.py +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/commands/workflow.py +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/commands/workspace.py +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/context/__init__.py +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/context/credentials.py +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/context/endpoint.py +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/context/profiles.py +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/context/resolver.py +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/contracts/__init__.py +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/contracts/auth.py +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/errors/__init__.py +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/errors/envelope.py +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/manifest/__init__.py +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/manifest/loader.py +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/messages/__init__.py +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/output/__init__.py +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/output/envelope.py +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/output/normalize.py +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/output/policy.py +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/output/progress.py +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/output/render.py +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/py.typed +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/runtime/__init__.py +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/runtime/confirm.py +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/runtime/dryrun.py +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/runtime/executor.py +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/runtime/input_loader.py +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/runtime/invocation.py +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/runtime/options.py +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/runtime/parents.py +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/runtime/runlog.py +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/runtime/session.py +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/runtime/updates.py +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/runtime/validate.py +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/services/__init__.py +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/services/argspec.py +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/services/coerce.py +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/services/conditions.py +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/services/dispatch.py +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/services/factory.py +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/services/input_fields.py +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/services/mapping.py +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/services/openapi_types.py +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/services/positionals.py +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/services/protocol.py +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/services/sdk_service.py +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/services/testing.py +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/services/type_system.py +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/skills/__init__.py +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/skills/installer.py +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/skills/steering.py +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/testing.py +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/spec/manifests/commands/activity.yaml +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/spec/manifests/commands/addon.yaml +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/spec/manifests/commands/agent.yaml +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/spec/manifests/commands/ai.yaml +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/spec/manifests/commands/annotation.yaml +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/spec/manifests/commands/auth.yaml +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/spec/manifests/commands/automation.yaml +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/spec/manifests/commands/batch.yaml +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/spec/manifests/commands/billing.yaml +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/spec/manifests/commands/browse.yaml +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/spec/manifests/commands/capability.yaml +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/spec/manifests/commands/client-app.yaml +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/spec/manifests/commands/completion.yaml +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/spec/manifests/commands/config.yaml +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/spec/manifests/commands/connector.yaml +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/spec/manifests/commands/context.yaml +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/spec/manifests/commands/dashboard.yaml +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/spec/manifests/commands/data-app.yaml +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/spec/manifests/commands/dataset.yaml +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/spec/manifests/commands/doctor.yaml +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/spec/manifests/commands/external-key.yaml +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/spec/manifests/commands/file.yaml +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/spec/manifests/commands/folder.yaml +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/spec/manifests/commands/job.yaml +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/spec/manifests/commands/log.yaml +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/spec/manifests/commands/notification.yaml +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/spec/manifests/commands/parameter.yaml +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/spec/manifests/commands/project.yaml +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/spec/manifests/commands/report.yaml +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/spec/manifests/commands/schedule.yaml +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/spec/manifests/commands/schema.yaml +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/spec/manifests/commands/skill.yaml +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/spec/manifests/commands/snippet.yaml +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/spec/manifests/commands/support.yaml +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/spec/manifests/commands/template.yaml +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/spec/manifests/commands/trash.yaml +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/spec/manifests/commands/upgrade.yaml +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/spec/manifests/commands/user.yaml +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/spec/manifests/commands/version.yaml +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/spec/manifests/commands/webhook.yaml +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/spec/manifests/commands/workflow.yaml +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/spec/manifests/commands/workspace.yaml +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/spec/manifests/openapi-operations.yaml +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/spec/manifests/schema-v1.json +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/spec/manifests/sdk-catalog.source.yaml +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/spec/manifests/sdk-methods.yaml +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/spec/openapi/metadata.json +0 -0
- {mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/spec/openapi/openapi.json +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.40
|
|
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.18
|
|
21
21
|
Requires-Dist: platformdirs<5,>=4.10
|
|
22
22
|
Requires-Dist: pydantic<3,>=2.13
|
|
23
23
|
Requires-Dist: pyyaml<7,>=6
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: mammoth-cli
|
|
3
|
-
version: 2.0.
|
|
3
|
+
version: 2.0.40
|
|
4
4
|
description: "Use Mammoth Analytics from a terminal: install or authenticate the CLI, discover its live command contract, and safely manage projects, data, views, pipelines (join, merge, pivot, filter, clean), dashboards, exports, and handoffs."
|
|
5
5
|
---
|
|
6
6
|
|
|
@@ -93,21 +93,33 @@ report a real gap with the command you tried.
|
|
|
93
93
|
Users often upload related files without saying how they relate ("make a
|
|
94
94
|
dashboard from t_a and t_b"). Work it out from the data before you build:
|
|
95
95
|
|
|
96
|
-
1.
|
|
97
|
-
`view
|
|
96
|
+
1. Upload every file, then read every view in Mammoth (not the local
|
|
97
|
+
files): `view get VIEW_ID` (columns, types, row count) and `view data get
|
|
98
|
+
VIEW_ID`. The data read lists `column_warnings`: numbers or dates stored
|
|
99
|
+
as text, and blanks, each with the fix.
|
|
98
100
|
2. Find the keys. A column in one view whose values appear in a column of
|
|
99
101
|
the other (`customer_id` and `id`, `order_ref` and `order_no`) is a
|
|
100
102
|
foreign key; the view with many rows per key is the main one.
|
|
101
103
|
3. Make the keys match before the join: same type (`convert-type`), same
|
|
102
104
|
case and padding (`text`), no blanks (`set-values`, `filter`).
|
|
103
|
-
4.
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
(
|
|
105
|
+
4. Act on every `column_warnings` entry for a column the deliverable uses:
|
|
106
|
+
run its `fix` (`convert-type` to `NUMERIC` or `DATE`; the values that are
|
|
107
|
+
not numbers become empty). A text `price` cannot be summed on a dashboard.
|
|
108
|
+
Then decide on each `blank_values` entry: fill, filter, or keep. Write one
|
|
109
|
+
line for each in your report (the column, the count, what you did and
|
|
110
|
+
why). A blank that you saw but did not mention is a miss.
|
|
111
|
+
5. `view transform join` the lookup view into the main view (`LEFT`). The
|
|
112
|
+
result's `join_check` gives `match_rate`, `unmatched_rows` and
|
|
113
|
+
`unmatched_keys`; put them in your report, and stop to compare the keys
|
|
114
|
+
if more than a few rows found no match.
|
|
108
115
|
6. Build the dashboard from the joined view
|
|
109
|
-
([dashboards](references/recipes/dashboards.md)).
|
|
116
|
+
([dashboards](references/recipes/dashboards.md)). If the data has money,
|
|
117
|
+
show it: add `revenue` (`math`, `qty * price`, `new_column`) and chart
|
|
118
|
+
its sum. Do not sum a unit price.
|
|
110
119
|
|
|
120
|
+
For the defaults that most pipelines use (new column or overwrite, `LEFT`
|
|
121
|
+
joins, date steps), see
|
|
122
|
+
[transforms](references/recipes/transforms.md#what-most-pipelines-look-like).
|
|
111
123
|
Say what you inferred (which columns you joined on, what you converted) in
|
|
112
124
|
your report. If no column links the files, ask before you combine them.
|
|
113
125
|
|
|
@@ -149,6 +161,10 @@ your report. If no column links the files, ask before you combine them.
|
|
|
149
161
|
target column *before* the change so the after-read has a comparison.
|
|
150
162
|
- A uniform result (every amount 0, every region "Unknown", most join rows
|
|
151
163
|
unmatched) means the previous step went wrong; stop and re-inspect it.
|
|
164
|
+
- `column_warnings` on a data read and `join_check` on a join are findings,
|
|
165
|
+
not decoration: fix each one the deliverable depends on, or say in the
|
|
166
|
+
report why you kept it. `view data get` pages with `{"offset": 51,
|
|
167
|
+
"limit": 50}`.
|
|
152
168
|
- A timeout, exit 7 or interruption does not prove failure; reconcile an
|
|
153
169
|
`outcome_unknown` (`job get`, `view task list`) before replaying.
|
|
154
170
|
- Run the [report checklist](references/report-checklist.md) before stating
|
|
@@ -110,7 +110,7 @@ Checkpoint Alert are the `view data-check` and `view checkpoint` families.
|
|
|
110
110
|
| Turn wide columns into label/value rows | Unpivot | `unnest` |
|
|
111
111
|
| Read fields out of a JSON column | Extract JSON | `json-extract` |
|
|
112
112
|
| Classify, tag or summarise rows with AI | Generative AI | `ai` |
|
|
113
|
-
| One SQL query over the view | AI SQL Query | `add-sql` (replaces the view's columns), `generate-sql` (from plain words) |
|
|
113
|
+
| One SQL query over the view | AI SQL Query | `add-sql` (replaces the view's columns), `generate-sql` (writes the query from plain words; apply it with `add-sql`) |
|
|
114
114
|
| Copy rows into another dataset, refreshed with the pipeline | Send to Dataset | `view export dataset` (not a `view transform`) |
|
|
115
115
|
|
|
116
116
|
`join` or `lookup`: `join` adds the chosen columns from every matching row
|
|
@@ -140,4 +140,4 @@ Ran once: `workflow.create`, `workflow.delete`, `workflow.get`, `workflow.graph`
|
|
|
140
140
|
|
|
141
141
|
Ran once: `workspace.app-usage`, `workspace.get`, `workspace.list`, `workspace.segment.list`, `workspace.segment.update`, `workspace.storage-breakdown`, `workspace.user.list`
|
|
142
142
|
|
|
143
|
-
Evidence collected on CLI releases 1.1.5 through 2.0.
|
|
143
|
+
Evidence collected on CLI releases 1.1.5 through 2.0.40; each row's release is recorded in `docs/release-capability-matrix.json` (`evidence_version`). A row that ran on an older release has not been re-run since unless its note says so. Details: `docs/capability-evidence/` in the repository.
|
|
@@ -11,7 +11,7 @@ Status meanings:
|
|
|
11
11
|
- **CLI defect fixed, untried since**: the failure was on the CLI side and this release repairs it; nobody has re-run the route yet.
|
|
12
12
|
- Commands not listed under a family are untried.
|
|
13
13
|
|
|
14
|
-
The typed `view transform *` commands all submit through `view.task.add
|
|
14
|
+
The typed `view transform *` commands all submit through `view.task.add` (`rename-columns` and `sort` through `view.update`); its matrix row names the transformations that ran end to end and were read back against a known answer: `add-column`, `add-sql`, `ai`, `bulk-replace`, `combine-columns`, `convert-type`, `copy-columns`, `crosstab`, `date-diff`, `delete-columns`, `discard-duplicates`, `extract-date`, `fill-missing`, `filter`, `generate-sql`, `increment-date`, `join`, `json-extract`, `limit-rows`, `lookup`, `math`, `pivot`, `rename-columns`, `replace`, `set-values`, `small-large`, `sort`, `split`, `substring`, `text`, `unnest`, `window`. A transformation not named there has the same untried status as any other command.
|
|
15
15
|
|
|
16
16
|
## Coverage by family
|
|
17
17
|
|
|
@@ -118,4 +118,4 @@ Ran once: `view.active-user.list`, `view.active-user.mark`, `view.ai.generate-da
|
|
|
118
118
|
| `view.data-check.update` | observed blocker | backend_error: PATCH with the schema's documented {op: command, path: enable/disable, value: null} shape returns HTTP 500 empty body (CLI outcome_unknown, exit 7) while the mutatio |
|
|
119
119
|
| `view.export.publish-db-update` | CLI defect fixed, untried since | 2.0.16 (example value is the documented {"odbc_type": "postgres"} object (a bare string is rejected)) |
|
|
120
120
|
|
|
121
|
-
Evidence collected on CLI releases 1.1.5 through 2.0.
|
|
121
|
+
Evidence collected on CLI releases 1.1.5 through 2.0.40; each row's release is recorded in `docs/release-capability-matrix.json` (`evidence_version`). A row that ran on an older release has not been re-run since unless its note says so. Details: `docs/capability-evidence/` in the repository.
|
|
@@ -762,7 +762,7 @@ Example: `mammoth view task add 123 --input '{"task_spec": {"DATAVIEW_ID": 123,
|
|
|
762
762
|
|
|
763
763
|
Result: `ViewTaskAddResult`; mutation `reversible_pipeline`, confirmation `none`, wait policy `always_wait`.
|
|
764
764
|
|
|
765
|
-
Status on release: ran once on CLI 2.0.
|
|
765
|
+
Status on release: ran once on CLI 2.0.40 — golden-data check golden-20260919 (CLI 2.0.18): typed transforms bulk-replace, convert-type, discard-duplicates, filter, join, pivot, set-values, text each run once on an owned fixture on release and read back with view data get against a known answer (values…
|
|
766
766
|
|
|
767
767
|
### `view.task.delete`
|
|
768
768
|
|
|
@@ -822,7 +822,7 @@ Example: `mammoth view transform add-column 123 --input '{"name": "Revenue repor
|
|
|
822
822
|
|
|
823
823
|
Result: `ViewTransformAddColumnResult`; mutation `reversible_pipeline`, confirmation `none`, wait policy `always_wait`.
|
|
824
824
|
|
|
825
|
-
Status on release:
|
|
825
|
+
Status on release: ran once on CLI 2.0.40 through `view.task.add` and was read back with `view data get`; other inputs for this transform are untried.
|
|
826
826
|
|
|
827
827
|
### `view.transform.add-sql`
|
|
828
828
|
|
|
@@ -832,7 +832,7 @@ Example: `mammoth view transform add-sql 123 --input '{"query": "SELECT region,
|
|
|
832
832
|
|
|
833
833
|
Result: `ViewTransformAddSqlResult`; mutation `reversible_pipeline`, confirmation `none`, wait policy `always_wait`.
|
|
834
834
|
|
|
835
|
-
Status on release: ran once on CLI 2.0.
|
|
835
|
+
Status on release: ran once on CLI 2.0.40 through `view.task.add` and was read back with `view data get`; other inputs for this transform are untried.
|
|
836
836
|
|
|
837
837
|
### `view.transform.ai`
|
|
838
838
|
|
|
@@ -842,7 +842,7 @@ Example: `mammoth view transform ai 123 --input '{"prompt": "Summarize revenue b
|
|
|
842
842
|
|
|
843
843
|
Result: `ViewTransformAiResult`; mutation `reversible_pipeline`, confirmation `none`, wait policy `always_wait`.
|
|
844
844
|
|
|
845
|
-
Status on release:
|
|
845
|
+
Status on release: ran once on CLI 2.0.40 through `view.task.add` and was read back with `view data get`; other inputs for this transform are untried.
|
|
846
846
|
|
|
847
847
|
### `view.transform.bulk-replace`
|
|
848
848
|
|
|
@@ -852,7 +852,7 @@ Example: `mammoth view transform bulk-replace 123 --input '{"columns": ["Status"
|
|
|
852
852
|
|
|
853
853
|
Result: `ViewTransformBulkReplaceResult`; mutation `reversible_pipeline`, confirmation `none`, wait policy `always_wait`.
|
|
854
854
|
|
|
855
|
-
Status on release: ran once on CLI 2.0.
|
|
855
|
+
Status on release: ran once on CLI 2.0.40 through `view.task.add` and was read back with `view data get`; other inputs for this transform are untried.
|
|
856
856
|
|
|
857
857
|
### `view.transform.combine-columns`
|
|
858
858
|
|
|
@@ -862,7 +862,7 @@ Example: `mammoth view transform combine-columns 123 --input '{"sources": ["Stat
|
|
|
862
862
|
|
|
863
863
|
Result: `ViewTransformCombineColumnsResult`; mutation `reversible_pipeline`, confirmation `none`, wait policy `always_wait`.
|
|
864
864
|
|
|
865
|
-
Status on release:
|
|
865
|
+
Status on release: ran once on CLI 2.0.40 through `view.task.add` and was read back with `view data get`; other inputs for this transform are untried.
|
|
866
866
|
|
|
867
867
|
### `view.transform.convert-type`
|
|
868
868
|
|
|
@@ -872,7 +872,7 @@ Example: `mammoth view transform convert-type 123 --input '{"conversions": [{"co
|
|
|
872
872
|
|
|
873
873
|
Result: `ViewTransformConvertTypeResult`; mutation `reversible_pipeline`, confirmation `none`, wait policy `always_wait`.
|
|
874
874
|
|
|
875
|
-
Status on release: ran once on CLI 2.0.
|
|
875
|
+
Status on release: ran once on CLI 2.0.40 through `view.task.add` and was read back with `view data get`; other inputs for this transform are untried.
|
|
876
876
|
|
|
877
877
|
### `view.transform.copy-columns`
|
|
878
878
|
|
|
@@ -882,7 +882,7 @@ Example: `mammoth view transform copy-columns 123 --input '{"copies": [{"source"
|
|
|
882
882
|
|
|
883
883
|
Result: `ViewTransformCopyColumnsResult`; mutation `reversible_pipeline`, confirmation `none`, wait policy `always_wait`.
|
|
884
884
|
|
|
885
|
-
Status on release:
|
|
885
|
+
Status on release: ran once on CLI 2.0.40 through `view.task.add` and was read back with `view data get`; other inputs for this transform are untried.
|
|
886
886
|
|
|
887
887
|
### `view.transform.crosstab`
|
|
888
888
|
|
|
@@ -892,7 +892,7 @@ Example: `mammoth view transform crosstab 123 --input '{"rows": ["sample"], "piv
|
|
|
892
892
|
|
|
893
893
|
Result: `ViewTransformCrosstabResult`; mutation `reversible_pipeline`, confirmation `none`, wait policy `always_wait`.
|
|
894
894
|
|
|
895
|
-
Status on release:
|
|
895
|
+
Status on release: ran once on CLI 2.0.40 through `view.task.add` and was read back with `view data get`; other inputs for this transform are untried.
|
|
896
896
|
|
|
897
897
|
### `view.transform.date-diff`
|
|
898
898
|
|
|
@@ -902,7 +902,7 @@ Example: `mammoth view transform date-diff 123 --input '{"component": "YEAR", "s
|
|
|
902
902
|
|
|
903
903
|
Result: `ViewTransformDateDiffResult`; mutation `reversible_pipeline`, confirmation `none`, wait policy `always_wait`.
|
|
904
904
|
|
|
905
|
-
Status on release:
|
|
905
|
+
Status on release: ran once on CLI 2.0.40 through `view.task.add` and was read back with `view data get`; other inputs for this transform are untried.
|
|
906
906
|
|
|
907
907
|
### `view.transform.delete-columns`
|
|
908
908
|
|
|
@@ -912,7 +912,7 @@ Example: `mammoth view transform delete-columns 123 --input '{"columns": ["Statu
|
|
|
912
912
|
|
|
913
913
|
Result: `ViewTransformDeleteColumnsResult`; mutation `reversible_pipeline`, confirmation `none`, wait policy `always_wait`.
|
|
914
914
|
|
|
915
|
-
Status on release:
|
|
915
|
+
Status on release: ran once on CLI 2.0.40 through `view.task.add` and was read back with `view data get`; other inputs for this transform are untried.
|
|
916
916
|
|
|
917
917
|
### `view.transform.discard-duplicates`
|
|
918
918
|
|
|
@@ -922,7 +922,7 @@ Example: `mammoth view transform discard-duplicates 123 --input '{"dataset_id":
|
|
|
922
922
|
|
|
923
923
|
Result: `ViewTransformDiscardDuplicatesResult`; mutation `reversible_pipeline`, confirmation `none`, wait policy `always_wait`.
|
|
924
924
|
|
|
925
|
-
Status on release: ran once on CLI 2.0.
|
|
925
|
+
Status on release: ran once on CLI 2.0.40 through `view.task.add` and was read back with `view data get`; other inputs for this transform are untried.
|
|
926
926
|
|
|
927
927
|
### `view.transform.extract-date`
|
|
928
928
|
|
|
@@ -932,7 +932,7 @@ Example: `mammoth view transform extract-date 123 --input '{"column": "Status",
|
|
|
932
932
|
|
|
933
933
|
Result: `ViewTransformExtractDateResult`; mutation `reversible_pipeline`, confirmation `none`, wait policy `always_wait`.
|
|
934
934
|
|
|
935
|
-
Status on release: ran once on CLI 2.0.
|
|
935
|
+
Status on release: ran once on CLI 2.0.40 through `view.task.add` and was read back with `view data get`; other inputs for this transform are untried.
|
|
936
936
|
|
|
937
937
|
### `view.transform.fill-missing`
|
|
938
938
|
|
|
@@ -942,7 +942,7 @@ Example: `mammoth view transform fill-missing 123 --input '{"column": "Status",
|
|
|
942
942
|
|
|
943
943
|
Result: `ViewTransformFillMissingResult`; mutation `reversible_pipeline`, confirmation `none`, wait policy `always_wait`.
|
|
944
944
|
|
|
945
|
-
Status on release: ran once on CLI 2.0.
|
|
945
|
+
Status on release: ran once on CLI 2.0.40 through `view.task.add` and was read back with `view data get`; other inputs for this transform are untried.
|
|
946
946
|
|
|
947
947
|
### `view.transform.filter`
|
|
948
948
|
|
|
@@ -952,7 +952,7 @@ Example: `mammoth view transform filter 123 --input '{"condition": {"column": "S
|
|
|
952
952
|
|
|
953
953
|
Result: `ViewTransformFilterResult`; mutation `reversible_pipeline`, confirmation `none`, wait policy `always_wait`.
|
|
954
954
|
|
|
955
|
-
Status on release: ran once on CLI 2.0.
|
|
955
|
+
Status on release: ran once on CLI 2.0.40 through `view.task.add` and was read back with `view data get`; other inputs for this transform are untried.
|
|
956
956
|
|
|
957
957
|
### `view.transform.generate-sql`
|
|
958
958
|
|
|
@@ -962,7 +962,7 @@ Example: `mammoth view transform generate-sql 123 --input '{"intent": "Summarize
|
|
|
962
962
|
|
|
963
963
|
Result: `ViewTransformGenerateSqlResult`; mutation `reversible_pipeline`, confirmation `none`, wait policy `always_wait`.
|
|
964
964
|
|
|
965
|
-
Status on release:
|
|
965
|
+
Status on release: ran once on CLI 2.0.40 through `view.task.add` and was read back with `view data get`; other inputs for this transform are untried.
|
|
966
966
|
|
|
967
967
|
### `view.transform.increment-date`
|
|
968
968
|
|
|
@@ -972,7 +972,7 @@ Example: `mammoth view transform increment-date 123 --input '{"column": "Status"
|
|
|
972
972
|
|
|
973
973
|
Result: `ViewTransformIncrementDateResult`; mutation `reversible_pipeline`, confirmation `none`, wait policy `always_wait`.
|
|
974
974
|
|
|
975
|
-
Status on release:
|
|
975
|
+
Status on release: ran once on CLI 2.0.40 through `view.task.add` and was read back with `view data get`; other inputs for this transform are untried.
|
|
976
976
|
|
|
977
977
|
### `view.transform.join`
|
|
978
978
|
|
|
@@ -982,7 +982,7 @@ Example: `mammoth view transform join 123 --input '{"foreign_view": 1, "join_typ
|
|
|
982
982
|
|
|
983
983
|
Result: `ViewTransformJoinResult`; mutation `reversible_pipeline`, confirmation `none`, wait policy `always_wait`.
|
|
984
984
|
|
|
985
|
-
Status on release: ran once on CLI 2.0.
|
|
985
|
+
Status on release: ran once on CLI 2.0.40 through `view.task.add` and was read back with `view data get`; other inputs for this transform are untried.
|
|
986
986
|
|
|
987
987
|
### `view.transform.json-extract`
|
|
988
988
|
|
|
@@ -992,7 +992,7 @@ Example: `mammoth view transform json-extract 123 --input '{"column": "Status",
|
|
|
992
992
|
|
|
993
993
|
Result: `ViewTransformJsonExtractResult`; mutation `reversible_pipeline`, confirmation `none`, wait policy `always_wait`.
|
|
994
994
|
|
|
995
|
-
Status on release:
|
|
995
|
+
Status on release: ran once on CLI 2.0.40 through `view.task.add` and was read back with `view data get`; other inputs for this transform are untried.
|
|
996
996
|
|
|
997
997
|
### `view.transform.limit-rows`
|
|
998
998
|
|
|
@@ -1002,7 +1002,7 @@ Example: `mammoth view transform limit-rows 123 --input '{"n": 1, "dataset_id":
|
|
|
1002
1002
|
|
|
1003
1003
|
Result: `ViewTransformLimitRowsResult`; mutation `reversible_pipeline`, confirmation `none`, wait policy `always_wait`.
|
|
1004
1004
|
|
|
1005
|
-
Status on release:
|
|
1005
|
+
Status on release: ran once on CLI 2.0.40 through `view.task.add` and was read back with `view data get`; other inputs for this transform are untried.
|
|
1006
1006
|
|
|
1007
1007
|
### `view.transform.lookup`
|
|
1008
1008
|
|
|
@@ -1012,7 +1012,7 @@ Example: `mammoth view transform lookup 123 --input '{"source": "Status", "looku
|
|
|
1012
1012
|
|
|
1013
1013
|
Result: `ViewTransformLookupResult`; mutation `reversible_pipeline`, confirmation `none`, wait policy `always_wait`.
|
|
1014
1014
|
|
|
1015
|
-
Status on release:
|
|
1015
|
+
Status on release: ran once on CLI 2.0.40 through `view.task.add` and was read back with `view data get`; other inputs for this transform are untried.
|
|
1016
1016
|
|
|
1017
1017
|
### `view.transform.math`
|
|
1018
1018
|
|
|
@@ -1022,7 +1022,7 @@ Example: `mammoth view transform math 123 --input '{"expression": "price * quant
|
|
|
1022
1022
|
|
|
1023
1023
|
Result: `ViewTransformMathResult`; mutation `reversible_pipeline`, confirmation `none`, wait policy `always_wait`.
|
|
1024
1024
|
|
|
1025
|
-
Status on release:
|
|
1025
|
+
Status on release: ran once on CLI 2.0.40 through `view.task.add` and was read back with `view data get`; other inputs for this transform are untried.
|
|
1026
1026
|
|
|
1027
1027
|
### `view.transform.pivot`
|
|
1028
1028
|
|
|
@@ -1032,7 +1032,7 @@ Example: `mammoth view transform pivot 123 --input '{"group_by": ["sample"], "ag
|
|
|
1032
1032
|
|
|
1033
1033
|
Result: `ViewTransformPivotResult`; mutation `reversible_pipeline`, confirmation `none`, wait policy `always_wait`.
|
|
1034
1034
|
|
|
1035
|
-
Status on release: ran once on CLI 2.0.
|
|
1035
|
+
Status on release: ran once on CLI 2.0.40 through `view.task.add` and was read back with `view data get`; other inputs for this transform are untried.
|
|
1036
1036
|
|
|
1037
1037
|
### `view.transform.rename-columns`
|
|
1038
1038
|
|
|
@@ -1042,7 +1042,7 @@ Example: `mammoth view transform rename-columns 123 --input '{"renames": {"cust_
|
|
|
1042
1042
|
|
|
1043
1043
|
Result: `ViewTransformRenameColumnsResult`; mutation `benign_mutation`, confirmation `none`, wait policy `not_async`.
|
|
1044
1044
|
|
|
1045
|
-
Status on release:
|
|
1045
|
+
Status on release: ran once on CLI 2.0.40 through `view.task.add` and was read back with `view data get`; other inputs for this transform are untried.
|
|
1046
1046
|
|
|
1047
1047
|
### `view.transform.replace`
|
|
1048
1048
|
|
|
@@ -1052,7 +1052,7 @@ Example: `mammoth view transform replace 123 --input '{"columns": ["Status"], "f
|
|
|
1052
1052
|
|
|
1053
1053
|
Result: `ViewTransformReplaceResult`; mutation `reversible_pipeline`, confirmation `none`, wait policy `always_wait`.
|
|
1054
1054
|
|
|
1055
|
-
Status on release:
|
|
1055
|
+
Status on release: ran once on CLI 2.0.40 through `view.task.add` and was read back with `view data get`; other inputs for this transform are untried.
|
|
1056
1056
|
|
|
1057
1057
|
### `view.transform.set-values`
|
|
1058
1058
|
|
|
@@ -1062,7 +1062,7 @@ Example: `mammoth view transform set-values 123 --input '{"values": [{"value": "
|
|
|
1062
1062
|
|
|
1063
1063
|
Result: `ViewTransformSetValuesResult`; mutation `reversible_pipeline`, confirmation `none`, wait policy `always_wait`.
|
|
1064
1064
|
|
|
1065
|
-
Status on release: ran once on CLI 2.0.
|
|
1065
|
+
Status on release: ran once on CLI 2.0.40 through `view.task.add` and was read back with `view data get`; other inputs for this transform are untried.
|
|
1066
1066
|
|
|
1067
1067
|
### `view.transform.small-large`
|
|
1068
1068
|
|
|
@@ -1072,7 +1072,7 @@ Example: `mammoth view transform small-large 123 --input '{"function": "SMALL",
|
|
|
1072
1072
|
|
|
1073
1073
|
Result: `ViewTransformSmallLargeResult`; mutation `reversible_pipeline`, confirmation `none`, wait policy `always_wait`.
|
|
1074
1074
|
|
|
1075
|
-
Status on release:
|
|
1075
|
+
Status on release: ran once on CLI 2.0.40 through `view.task.add` and was read back with `view data get`; other inputs for this transform are untried.
|
|
1076
1076
|
|
|
1077
1077
|
### `view.transform.sort`
|
|
1078
1078
|
|
|
@@ -1082,7 +1082,7 @@ Example: `mammoth view transform sort 123 --input '{"order_by": [["Revenue", "DE
|
|
|
1082
1082
|
|
|
1083
1083
|
Result: `ViewTransformSortResult`; mutation `benign_mutation`, confirmation `none`, wait policy `not_async`.
|
|
1084
1084
|
|
|
1085
|
-
Status on release:
|
|
1085
|
+
Status on release: ran once on CLI 2.0.40 through `view.task.add` and was read back with `view data get`; other inputs for this transform are untried.
|
|
1086
1086
|
|
|
1087
1087
|
### `view.transform.split`
|
|
1088
1088
|
|
|
@@ -1092,7 +1092,7 @@ Example: `mammoth view transform split 123 --input '{"column": "Status", "delimi
|
|
|
1092
1092
|
|
|
1093
1093
|
Result: `ViewTransformSplitResult`; mutation `reversible_pipeline`, confirmation `none`, wait policy `always_wait`.
|
|
1094
1094
|
|
|
1095
|
-
Status on release:
|
|
1095
|
+
Status on release: ran once on CLI 2.0.40 through `view.task.add` and was read back with `view data get`; other inputs for this transform are untried.
|
|
1096
1096
|
|
|
1097
1097
|
### `view.transform.substring`
|
|
1098
1098
|
|
|
@@ -1102,7 +1102,7 @@ Example: `mammoth view transform substring 123 --input '{"column": "Status", "da
|
|
|
1102
1102
|
|
|
1103
1103
|
Result: `ViewTransformSubstringResult`; mutation `reversible_pipeline`, confirmation `none`, wait policy `always_wait`.
|
|
1104
1104
|
|
|
1105
|
-
Status on release:
|
|
1105
|
+
Status on release: ran once on CLI 2.0.40 through `view.task.add` and was read back with `view data get`; other inputs for this transform are untried.
|
|
1106
1106
|
|
|
1107
1107
|
### `view.transform.text`
|
|
1108
1108
|
|
|
@@ -1112,7 +1112,7 @@ Example: `mammoth view transform text 123 --input '{"columns": ["Status"], "data
|
|
|
1112
1112
|
|
|
1113
1113
|
Result: `ViewTransformTextResult`; mutation `reversible_pipeline`, confirmation `none`, wait policy `always_wait`.
|
|
1114
1114
|
|
|
1115
|
-
Status on release: ran once on CLI 2.0.
|
|
1115
|
+
Status on release: ran once on CLI 2.0.40 through `view.task.add` and was read back with `view data get`; other inputs for this transform are untried.
|
|
1116
1116
|
|
|
1117
1117
|
### `view.transform.unnest`
|
|
1118
1118
|
|
|
@@ -1122,7 +1122,7 @@ Example: `mammoth view transform unnest 123 --input '{"columns": ["Status"], "da
|
|
|
1122
1122
|
|
|
1123
1123
|
Result: `ViewTransformUnnestResult`; mutation `reversible_pipeline`, confirmation `none`, wait policy `always_wait`.
|
|
1124
1124
|
|
|
1125
|
-
Status on release:
|
|
1125
|
+
Status on release: ran once on CLI 2.0.40 through `view.task.add` and was read back with `view data get`; other inputs for this transform are untried.
|
|
1126
1126
|
|
|
1127
1127
|
### `view.transform.window`
|
|
1128
1128
|
|
|
@@ -1132,7 +1132,7 @@ Example: `mammoth view transform window 123 --input '{"function": "ROW_NUMBER",
|
|
|
1132
1132
|
|
|
1133
1133
|
Result: `ViewTransformWindowResult`; mutation `reversible_pipeline`, confirmation `none`, wait policy `always_wait`.
|
|
1134
1134
|
|
|
1135
|
-
Status on release: ran once on CLI 2.0.
|
|
1135
|
+
Status on release: ran once on CLI 2.0.40 through `view.task.add` and was read back with `view data get`; other inputs for this transform are untried.
|
|
1136
1136
|
|
|
1137
1137
|
### `view.trash`
|
|
1138
1138
|
|
{mammoth_cli-2.0.38 → mammoth_cli-2.0.40}/mammoth_cli/bundled_skill/mammoth-cli/references/input.md
RENAMED
|
@@ -43,7 +43,7 @@ anything else fails with `invalid_condition` before any request is sent.
|
|
|
43
43
|
| `view transform filter` | `filter_type` | `SHOW` (keep matches, default), `REMOVE` |
|
|
44
44
|
| `view transform text` | `case` | `UPPER`, `LOWER`, `TITLE`; `trim`: true/false |
|
|
45
45
|
| `view transform convert-type` | `conversions[].to` | `TEXT`, `NUMERIC`, `DATE` |
|
|
46
|
-
| `view transform fill-missing` | `direction` | `
|
|
46
|
+
| `view transform fill-missing` | `direction` | `FIRST_VALUE` (forward fill: previous row), `LAST_VALUE` (back-fill: next row) |
|
|
47
47
|
| `view transform join` | `join_type` | `INNER`, `LEFT`, `RIGHT`, `OUTER` |
|
|
48
48
|
| `view transform set-values` | `column_type` (new column) | `TEXT`, `NUMERIC`, `DATE` |
|
|
49
49
|
|
|
@@ -65,7 +65,33 @@ correct aggregation for a "distinct people" card under a date filter);
|
|
|
65
65
|
ID --input '{"body": {"params": {"pages": [{"title": ..., "focus": {...},
|
|
66
66
|
"charts": [...]}]}}}'` adds a page, but that route runs through the LLM
|
|
67
67
|
guard and may drop a unit it cannot evidence (it says so in `data.message`);
|
|
68
|
-
`canvas save` keeps what you wrote.
|
|
68
|
+
`canvas save` keeps what you wrote. When the route refuses a chart (for
|
|
69
|
+
example a `pie` that the data does not support), `data.chart_check.refused`
|
|
70
|
+
names it. A new page that got no charts is removed, and
|
|
71
|
+
`data.chart_check.removed_pages` lists it. Add a chart of a different kind
|
|
72
|
+
(`hbar`, `line`, `table`) for that page.
|
|
73
|
+
|
|
74
|
+
## Put the money on the board
|
|
75
|
+
|
|
76
|
+
If the data has money (a price, an amount, revenue or cost), the dashboard
|
|
77
|
+
must show it. A board that shows only counts or quantities has left out the
|
|
78
|
+
number the user most likely wants.
|
|
79
|
+
|
|
80
|
+
- A money column must be `NUMERIC` first. `view data get` flags a money
|
|
81
|
+
column that is stored as text in `column_warnings`.
|
|
82
|
+
- A unit price is not revenue. Do not sum a price. If the data has a
|
|
83
|
+
quantity and a unit price, add a revenue column before you build the
|
|
84
|
+
board, then chart the sum of that column:
|
|
85
|
+
|
|
86
|
+
```bash
|
|
87
|
+
mammoth view transform math VIEW_ID --project PROJECT_ID \
|
|
88
|
+
--input '{"dataset_id":DATASET_ID,"expression":"qty * price","new_column":"revenue"}'
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
- Put revenue in a KPI (`focus.kpis`, `agg` `sum`, `unit.prefix` for the
|
|
92
|
+
currency) and in one or more charts (revenue by product, by segment, by
|
|
93
|
+
month). Rows with an empty price give an empty revenue. Say how many there
|
|
94
|
+
are in your report.
|
|
69
95
|
|
|
70
96
|
**Read the bindings back, then the numbers.** `dashboard canvas get` returns
|
|
71
97
|
`data.meta.figures` — `"p1:kpi:2": {"descriptors": {"value": "<id>"}}` per
|
|
@@ -22,6 +22,8 @@ mammoth view list CUSTOMERS_DS --project PROJECT_ID # -> CUSTOMERS_VIEW
|
|
|
22
22
|
# 2. look before you change: column names, types, row_count, a sample
|
|
23
23
|
mammoth view get ORDERS_VIEW ORDERS_DS --project PROJECT_ID
|
|
24
24
|
mammoth view data get ORDERS_VIEW ORDERS_DS --project PROJECT_ID
|
|
25
|
+
# data.column_warnings: text columns of numbers/dates (with the convert-type fix) and blanks;
|
|
26
|
+
# plan step 3 from them
|
|
25
27
|
|
|
26
28
|
# 3. clean orders (each call waits for its job; read back after each value change)
|
|
27
29
|
mammoth view transform discard-duplicates ORDERS_VIEW --project PROJECT_ID \
|
|
@@ -43,9 +45,10 @@ mammoth view get ORDERS_VIEW ORDERS_DS --project PROJECT_ID # row_count before
|
|
|
43
45
|
# 5. join, then check the match rate before building on it
|
|
44
46
|
mammoth view transform join ORDERS_VIEW --project PROJECT_ID \
|
|
45
47
|
--input '{"dataset_id": ORDERS_DS, "foreign_view": CUSTOMERS_VIEW, "foreign_dataset_id": CUSTOMERS_DS, "join_type": "LEFT", "on": [{"left": "customer_id", "right": "customer_id"}], "select": ["region"]}'
|
|
46
|
-
|
|
47
|
-
# if
|
|
48
|
+
# data.join_check: rows_before/rows_after, match_rate, unmatched_rows, unmatched_keys; report them
|
|
49
|
+
# if many rows are unmatched, the key does not match: compare the two key columns' values
|
|
48
50
|
# (type, padding, case) with view data get on both views; do not summarise unmatched data
|
|
51
|
+
# rows_after > rows_before: a key repeats in the other view (use lookup for one value per key)
|
|
49
52
|
|
|
50
53
|
# 6. deliverable first: export the cleaned, joined rows before any step that replaces them
|
|
51
54
|
mammoth view export csv ORDERS_VIEW --project PROJECT_ID \
|
|
@@ -21,9 +21,10 @@ Prefer typed operations such as convert-type, fill-missing, replace, join,
|
|
|
21
21
|
lookup, filter and math only when the live schema
|
|
22
22
|
lists them. Pick the operation by what it does, not by its name:
|
|
23
23
|
|
|
24
|
-
- `fill-missing` copies
|
|
25
|
-
|
|
26
|
-
|
|
24
|
+
- `fill-missing` copies an adjacent row's value into blanks, in the
|
|
25
|
+
`order_by` order. `direction` `FIRST_VALUE` takes the previous row's value
|
|
26
|
+
(forward fill, the usual choice); `LAST_VALUE` takes the next row's value
|
|
27
|
+
(back-fill). It cannot write a literal. To fill blanks with a constant (for example `0`), use `set-values`
|
|
27
28
|
on the existing column with an `IS_EMPTY` condition:
|
|
28
29
|
|
|
29
30
|
```bash
|
|
@@ -73,6 +74,44 @@ mammoth schema get view.transform.join
|
|
|
73
74
|
mammoth view transform join VIEW_ID --project PROJECT_ID --input INPUT_JSON
|
|
74
75
|
```
|
|
75
76
|
|
|
77
|
+
## What most pipelines look like
|
|
78
|
+
|
|
79
|
+
These patterns come from how Mammoth pipelines are usually built. Use them
|
|
80
|
+
as defaults, and let the user's request override them:
|
|
81
|
+
|
|
82
|
+
- Keep it short. Most pipelines have one to three steps and touch a few
|
|
83
|
+
columns. Add only the steps the deliverable needs.
|
|
84
|
+
- New column or overwrite? `set-values`, `math` and `lookup` take
|
|
85
|
+
`new_column` (add a column) or `existing_column` (replace the values in
|
|
86
|
+
place), never both. Overwriting is as common as adding. If the user said
|
|
87
|
+
"fix", "clean" or "change" a column, use `existing_column`. If they said
|
|
88
|
+
"add", "calculate" or "flag", use `new_column`. If it is not clear, ask.
|
|
89
|
+
- Joins are nearly always `LEFT` on one key column. Use `INNER`, `RIGHT`,
|
|
90
|
+
`OUTER` or a key of two or more columns only when the user asks for it or
|
|
91
|
+
the data needs it, and say why in your report.
|
|
92
|
+
- Check the key before a join or lookup. Most keys go in without a prep
|
|
93
|
+
step, so a type, case or padding difference shows up as unmatched rows. Read
|
|
94
|
+
both key columns first (`view data get`) and act on `join_check`.
|
|
95
|
+
- Date steps (`increment-date`, `extract-date`, and `text` on date columns)
|
|
96
|
+
fail more often than other steps. Before a date step, confirm that the
|
|
97
|
+
column type is `DATE` (`view get`); if it is `TEXT`, run `convert-type`
|
|
98
|
+
first. Check the result on a few rows.
|
|
99
|
+
- Convert several columns to the same type in one `convert-type` call (one
|
|
100
|
+
`conversions` entry for each column), not one call for each column.
|
|
101
|
+
Upload already types numbers and ISO dates, so read the types (`view get`)
|
|
102
|
+
first and convert only the columns that are wrong. The CLI skips a column
|
|
103
|
+
that already has the type (`skipped` in the result).
|
|
104
|
+
- Remove duplicates near the end, after the cleanup and joins, so the check
|
|
105
|
+
uses the final columns.
|
|
106
|
+
- `filter` also takes a plain-language `prompt` instead of a `condition`.
|
|
107
|
+
Use a `condition` when the rule is exact (a column, an operator, a value).
|
|
108
|
+
Use `prompt` only when the user described the rule in words and no exact
|
|
109
|
+
condition expresses it, then check the kept rows.
|
|
110
|
+
- "Top N" means the largest values first. Use the smallest values first only
|
|
111
|
+
when the user says "bottom", "lowest" or "smallest".
|
|
112
|
+
- The last step of a pipeline is not a signal that it is finished. Say that
|
|
113
|
+
the work is done only after you verify the deliverable.
|
|
114
|
+
|
|
76
115
|
## Aggregate or summarise
|
|
77
116
|
|
|
78
117
|
For a grouped summary (totals per region, counts per status) use the typed
|
|
@@ -9,11 +9,13 @@ or secrets in an argument, prompt, transcript, or checkpoint.
|
|
|
9
9
|
from PyPI into a fresh environment and verify it:
|
|
10
10
|
|
|
11
11
|
```bash
|
|
12
|
-
python3 -m venv .mammoth && .mammoth/bin/python -m pip install --upgrade mammoth-cli
|
|
12
|
+
python3 -m venv .mammoth && .mammoth/bin/python -m pip install --no-cache-dir --upgrade mammoth-cli
|
|
13
13
|
.mammoth/bin/mammoth --version # or: uv tool install mammoth-cli
|
|
14
14
|
```
|
|
15
15
|
|
|
16
|
-
Pin `mammoth-cli==X.Y.Z` when the task names an approved release
|
|
16
|
+
Pin `mammoth-cli==X.Y.Z` when the task names an approved release, and
|
|
17
|
+
check that `mammoth --version` prints it (a pip cache can serve an older
|
|
18
|
+
release for a few minutes after a new one is published). Use the
|
|
17
19
|
host installer script (`installers/mammoth-install.sh` in the repository)
|
|
18
20
|
only when the operator names it; do not pipe a remote script to a shell on
|
|
19
21
|
your own initiative. The SDK (`mammoth-io`) comes with the CLI. If a later
|
|
@@ -36,6 +36,7 @@ from mammoth_cli.runtime.invocation import Invocation
|
|
|
36
36
|
from mammoth_cli.runtime.session import open_service, require_project
|
|
37
37
|
from mammoth_cli.services.argspec import arg_spec
|
|
38
38
|
from mammoth_cli.services.command_contract import bind_command_inputs
|
|
39
|
+
from mammoth_cli.services.dashboard_pages import check_added_pages
|
|
39
40
|
from mammoth_cli.services.positionals import resolve_positionals
|
|
40
41
|
|
|
41
42
|
HandlerResult = tuple[Any, dict[str, Any]]
|
|
@@ -671,6 +672,9 @@ def generated_dashboard(invocation: Invocation) -> HandlerResult:
|
|
|
671
672
|
with open_service(invocation) as (service, auth):
|
|
672
673
|
data = service.call(_symbol(invocation), **kwargs)
|
|
673
674
|
data = _resolve_job(service, invocation, data)
|
|
675
|
+
if invocation.command_id == "dashboard.pages.add" and "body" in kwargs:
|
|
676
|
+
requested = kwargs["body"].get("params", {}).get("pages", [])
|
|
677
|
+
data = check_added_pages(service, positionals["dashboard_id"], requested, data)
|
|
674
678
|
return data, _meta(invocation, auth.workspace_id)
|
|
675
679
|
|
|
676
680
|
|
|
@@ -109,7 +109,7 @@ _COMMAND_DISCOVERY_PURPOSES = {
|
|
|
109
109
|
"filter rows keep drop exclude remove delete rows where condition subset"
|
|
110
110
|
),
|
|
111
111
|
"view.transform.generate-sql": (
|
|
112
|
-
"generate sql from natural language intent question
|
|
112
|
+
"generate write sql query from natural language intent question"
|
|
113
113
|
),
|
|
114
114
|
"view.transform.increment-date": "add subtract days months years to a date column shift",
|
|
115
115
|
"view.transform.join": (
|