mammoth-cli 2.0.64__tar.gz → 2.0.66__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.64 → mammoth_cli-2.0.66}/PKG-INFO +2 -2
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/__init__.py +1 -1
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/bundled_skill/mammoth-cli/SKILL.md +1 -1
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/bundled_skill/mammoth-cli/references/command-index.md +3 -3
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/project.md +30 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/view.md +10 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/commands/project.py +26 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/commands/registry.py +4 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/commands/schema.py +51 -6
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/commands/view.py +97 -1
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/services/command_contract.py +3 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/services/positionals.py +31 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/pyproject.toml +2 -2
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/spec/manifests/commands/automation.yaml +3 -1
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/spec/manifests/commands/billing.yaml +1 -1
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/spec/manifests/commands/dashboard.yaml +2 -1
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/spec/manifests/commands/file.yaml +2 -1
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/spec/manifests/commands/project.yaml +117 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/spec/manifests/commands/view.yaml +68 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/spec/manifests/sdk-catalog.source.yaml +21 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/spec/manifests/sdk-methods.yaml +50 -2
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/.gitignore +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/LICENSE +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/README.md +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/__main__.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/app.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/bundled_skill/mammoth-cli/references/about-mammoth.md +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/bundled_skill/mammoth-cli/references/auth.md +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/bundled_skill/mammoth-cli/references/capabilities-misc.md +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/bundled_skill/mammoth-cli/references/capabilities.md +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/activity.md +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/addon.md +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/agent.md +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/ai.md +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/annotation.md +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/auth.md +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/automation.md +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/batch.md +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/billing.md +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/browse.md +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/capability.md +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/client-app.md +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/completion.md +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/config.md +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/connector.md +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/context.md +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dashboard-qa.md +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dashboard.md +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/data-app.md +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/dataset.md +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/doctor.md +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/external-key.md +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/file.md +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/folder.md +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/job.md +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/log.md +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/notification.md +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/parameter.md +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/report.md +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/schedule.md +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/schema.md +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/skill.md +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/snippet.md +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/support.md +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/template.md +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/trash.md +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/upgrade.md +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/user.md +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/version.md +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/view-transform.md +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/webhook.md +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/workflow.md +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/bundled_skill/mammoth-cli/references/commands/workspace.md +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/bundled_skill/mammoth-cli/references/handoff.md +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/bundled_skill/mammoth-cli/references/input.md +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/bundled_skill/mammoth-cli/references/jobs-drafts.md +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/bundled_skill/mammoth-cli/references/machine-output.md +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/bundled_skill/mammoth-cli/references/operations.md +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/auth-scope.md +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/cleanup.md +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/dashboards.md +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/end-to-end.md +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/exports.md +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/index.md +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/need-action.md +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/resources.md +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/scheduling.md +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/transforms.md +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/bundled_skill/mammoth-cli/references/recipes/typed-etl-discovery.md +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/bundled_skill/mammoth-cli/references/recovery.md +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/bundled_skill/mammoth-cli/references/report-checklist.md +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/bundled_skill/mammoth-cli/references/retention.md +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/bundled_skill/mammoth-cli/references/safety.md +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/bundled_skill/mammoth-cli/references/task-start.md +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/commands/__init__.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/commands/activity.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/commands/addon.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/commands/agent.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/commands/ai.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/commands/annotation.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/commands/auth.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/commands/automation.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/commands/batch.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/commands/billing.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/commands/browse.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/commands/capability.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/commands/client_app.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/commands/completion.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/commands/config.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/commands/connector.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/commands/context.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/commands/dashboard.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/commands/data_app.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/commands/dataset.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/commands/doctor.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/commands/external_key.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/commands/file.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/commands/folder.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/commands/job.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/commands/notification.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/commands/parameter.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/commands/report.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/commands/schedule.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/commands/skill.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/commands/snippet.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/commands/support.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/commands/template.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/commands/trash.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/commands/upgrade.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/commands/user.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/commands/view_ops.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/commands/webhook.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/commands/workflow.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/commands/workspace.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/context/__init__.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/context/credentials.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/context/endpoint.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/context/profiles.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/context/resolver.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/contracts/__init__.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/contracts/auth.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/embed.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/errors/__init__.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/errors/envelope.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/manifest/__init__.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/manifest/loader.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/messages/__init__.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/output/__init__.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/output/envelope.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/output/normalize.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/output/policy.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/output/progress.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/output/render.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/py.typed +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/runtime/__init__.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/runtime/confirm.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/runtime/dryrun.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/runtime/embedded.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/runtime/executor.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/runtime/input_loader.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/runtime/invocation.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/runtime/options.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/runtime/parents.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/runtime/runlog.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/runtime/session.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/runtime/strict.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/runtime/updates.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/runtime/validate.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/services/__init__.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/services/argspec.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/services/coerce.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/services/conditions.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/services/dashboard_pages.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/services/dashboard_review.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/services/data_quality.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/services/dispatch.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/services/factory.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/services/input_fields.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/services/mapping.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/services/openapi_types.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/services/protocol.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/services/sdk_service.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/services/testing.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/services/type_system.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/skills/__init__.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/skills/installer.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/skills/steering.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/mammoth_cli/testing.py +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/spec/manifests/commands/activity.yaml +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/spec/manifests/commands/addon.yaml +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/spec/manifests/commands/agent.yaml +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/spec/manifests/commands/ai.yaml +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/spec/manifests/commands/annotation.yaml +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/spec/manifests/commands/auth.yaml +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/spec/manifests/commands/batch.yaml +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/spec/manifests/commands/browse.yaml +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/spec/manifests/commands/capability.yaml +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/spec/manifests/commands/client-app.yaml +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/spec/manifests/commands/completion.yaml +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/spec/manifests/commands/config.yaml +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/spec/manifests/commands/connector.yaml +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/spec/manifests/commands/context.yaml +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/spec/manifests/commands/data-app.yaml +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/spec/manifests/commands/dataset.yaml +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/spec/manifests/commands/doctor.yaml +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/spec/manifests/commands/external-key.yaml +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/spec/manifests/commands/folder.yaml +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/spec/manifests/commands/job.yaml +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/spec/manifests/commands/log.yaml +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/spec/manifests/commands/notification.yaml +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/spec/manifests/commands/parameter.yaml +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/spec/manifests/commands/report.yaml +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/spec/manifests/commands/schedule.yaml +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/spec/manifests/commands/schema.yaml +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/spec/manifests/commands/skill.yaml +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/spec/manifests/commands/snippet.yaml +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/spec/manifests/commands/support.yaml +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/spec/manifests/commands/template.yaml +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/spec/manifests/commands/trash.yaml +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/spec/manifests/commands/upgrade.yaml +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/spec/manifests/commands/user.yaml +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/spec/manifests/commands/version.yaml +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/spec/manifests/commands/webhook.yaml +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/spec/manifests/commands/workflow.yaml +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/spec/manifests/commands/workspace.yaml +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/spec/manifests/openapi-operations.yaml +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/spec/manifests/schema-v1.json +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/spec/openapi/metadata.json +0 -0
- {mammoth_cli-2.0.64 → mammoth_cli-2.0.66}/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.66
|
|
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.32
|
|
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
|
---
|
|
2
2
|
name: mammoth-cli
|
|
3
|
-
version: 2.0.
|
|
3
|
+
version: 2.0.66
|
|
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
|
|
|
@@ -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 571; 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
|
|
|
@@ -32,7 +32,7 @@ Load only the applicable domain file:
|
|
|
32
32
|
- [log](commands/log.md) — 2 published commands
|
|
33
33
|
- [notification](commands/notification.md) — 5 published commands
|
|
34
34
|
- [parameter](commands/parameter.md) — 14 published commands
|
|
35
|
-
- [project](commands/project.md) —
|
|
35
|
+
- [project](commands/project.md) — 23 published commands
|
|
36
36
|
- [report](commands/report.md) — 1 published commands
|
|
37
37
|
- [schedule](commands/schedule.md) — 5 published commands
|
|
38
38
|
- [schema](commands/schema.md) — 3 published commands
|
|
@@ -45,7 +45,7 @@ Load only the applicable domain file:
|
|
|
45
45
|
- [user](commands/user.md) — 8 published commands
|
|
46
46
|
- [version](commands/version.md) — 1 published commands
|
|
47
47
|
- [view-transform](commands/view-transform.md) — 32 published commands
|
|
48
|
-
- [view](commands/view.md) —
|
|
48
|
+
- [view](commands/view.md) — 88 published commands
|
|
49
49
|
- [webhook](commands/webhook.md) — 7 published commands
|
|
50
50
|
- [workflow](commands/workflow.md) — 16 published commands
|
|
51
51
|
- [workspace](commands/workspace.md) — 20 published commands
|
|
@@ -102,6 +102,36 @@ Result: `ProjectListResult`; mutation `read`, confirmation `none`, wait policy `
|
|
|
102
102
|
|
|
103
103
|
Status on release: ran once on CLI 2.0.18 — fixture-lifecycle sweep 2026-09-19: exit 0 on release with CLI 2.0.18. Final check: only project 3 (API Tests_project, pre-existing, not touched) remains; project 41 is gone. Project 40 (golden-... concurrent run) was also gone by this point but was never tou…
|
|
104
104
|
|
|
105
|
+
### `project.memory.add`
|
|
106
|
+
|
|
107
|
+
Run: `mammoth project memory add`. Exact input fields: `mammoth schema get project.memory.add`.
|
|
108
|
+
|
|
109
|
+
Example: `mammoth project memory add 123 --input '{"text": "sample"}'`. Placeholders are illustrative; resolve IDs and input from observed reads.
|
|
110
|
+
|
|
111
|
+
Result: `ProjectMemoryAddResult`; mutation `benign_mutation`, confirmation `none`, wait policy `not_async`.
|
|
112
|
+
|
|
113
|
+
Status on release: untried; no live run recorded.
|
|
114
|
+
|
|
115
|
+
### `project.memory.list`
|
|
116
|
+
|
|
117
|
+
Run: `mammoth project memory list`. Exact input fields: `mammoth schema get project.memory.list`.
|
|
118
|
+
|
|
119
|
+
Example: `mammoth project memory list 123`. Placeholders are illustrative; resolve IDs and input from observed reads.
|
|
120
|
+
|
|
121
|
+
Result: `ProjectMemoryListResult`; mutation `read`, confirmation `none`, wait policy `not_async`.
|
|
122
|
+
|
|
123
|
+
Status on release: untried; no live run recorded.
|
|
124
|
+
|
|
125
|
+
### `project.memory.remove`
|
|
126
|
+
|
|
127
|
+
Run: `mammoth project memory remove`. Exact input fields: `mammoth schema get project.memory.remove`.
|
|
128
|
+
|
|
129
|
+
Example: `mammoth project memory remove 123 --input '{"index": 1}'`. Placeholders are illustrative; resolve IDs and input from observed reads.
|
|
130
|
+
|
|
131
|
+
Result: `ProjectMemoryRemoveResult`; mutation `benign_mutation`, confirmation `none`, wait policy `not_async`.
|
|
132
|
+
|
|
133
|
+
Status on release: untried; no live run recorded.
|
|
134
|
+
|
|
105
135
|
### `project.pending-changes`
|
|
106
136
|
|
|
107
137
|
Run: `mammoth project pending-changes`. Exact input fields: `mammoth schema get project.pending-changes`.
|
|
@@ -222,6 +222,16 @@ Result: `ViewDataAggregateResult`; mutation `read`, confirmation `none`, wait po
|
|
|
222
222
|
|
|
223
223
|
Status on release: untried; no live run recorded.
|
|
224
224
|
|
|
225
|
+
### `view.data.explore`
|
|
226
|
+
|
|
227
|
+
Run: `mammoth view data explore`. Exact input fields: `mammoth schema get view.data.explore`.
|
|
228
|
+
|
|
229
|
+
Example: `mammoth view data explore 123 Status 123`. Placeholders are illustrative; resolve IDs and input from observed reads.
|
|
230
|
+
|
|
231
|
+
Result: `ViewDataExploreResult`; mutation `read`, confirmation `none`, wait policy `always_wait`.
|
|
232
|
+
|
|
233
|
+
Status on release: untried; no live run recorded.
|
|
234
|
+
|
|
225
235
|
### `view.data.get`
|
|
226
236
|
|
|
227
237
|
Run: `mammoth view data get`. Exact input fields: `mammoth schema get view.data.get`.
|
|
@@ -141,6 +141,32 @@ def project_pending_changes(invocation: Invocation) -> HandlerResult:
|
|
|
141
141
|
return data, _meta(invocation, auth.workspace_id, project_id)
|
|
142
142
|
|
|
143
143
|
|
|
144
|
+
def project_memory_list(invocation: Invocation) -> HandlerResult:
|
|
145
|
+
"""List the caller's saved agent preferences for a project."""
|
|
146
|
+
project_id = _project_id(invocation)
|
|
147
|
+
with open_service(invocation) as (service, auth):
|
|
148
|
+
data = service.call(_symbol(invocation), project_id=project_id)
|
|
149
|
+
return data, _meta(invocation, auth.workspace_id, project_id)
|
|
150
|
+
|
|
151
|
+
|
|
152
|
+
def project_memory_add(invocation: Invocation) -> HandlerResult:
|
|
153
|
+
"""Save one agent preference (``text`` from ``--input``) for the caller."""
|
|
154
|
+
project_id = _project_id(invocation)
|
|
155
|
+
text = _require_input_field(invocation.load_input(), "text")
|
|
156
|
+
with open_service(invocation) as (service, auth):
|
|
157
|
+
data = service.call(_symbol(invocation), project_id=project_id, text=text)
|
|
158
|
+
return data, _meta(invocation, auth.workspace_id, project_id)
|
|
159
|
+
|
|
160
|
+
|
|
161
|
+
def project_memory_remove(invocation: Invocation) -> HandlerResult:
|
|
162
|
+
"""Remove the caller's saved preference at ``index`` (from ``--input``)."""
|
|
163
|
+
project_id = _project_id(invocation)
|
|
164
|
+
index = _require_input_field(invocation.load_input(), "index")
|
|
165
|
+
with open_service(invocation) as (service, auth):
|
|
166
|
+
data = service.call(_symbol(invocation), project_id=project_id, index=index)
|
|
167
|
+
return data, _meta(invocation, auth.workspace_id, project_id)
|
|
168
|
+
|
|
169
|
+
|
|
144
170
|
def project_resource_status(invocation: Invocation) -> HandlerResult:
|
|
145
171
|
"""Report the status of a project's resources."""
|
|
146
172
|
project_id = _project_id(invocation)
|
|
@@ -207,6 +207,9 @@ HANDLERS: dict[str, Handler] = {
|
|
|
207
207
|
"project.get": project_cmd.project_get,
|
|
208
208
|
"project.check": project_cmd.project_check,
|
|
209
209
|
"project.pending-changes": project_cmd.project_pending_changes,
|
|
210
|
+
"project.memory.list": project_cmd.project_memory_list,
|
|
211
|
+
"project.memory.add": project_cmd.project_memory_add,
|
|
212
|
+
"project.memory.remove": project_cmd.project_memory_remove,
|
|
210
213
|
"project.resource-status": project_cmd.project_resource_status,
|
|
211
214
|
"project.resource-dependencies": project_cmd.project_resource_dependencies,
|
|
212
215
|
"project.resource-dependencies.update": project_cmd.project_resource_dependencies_update,
|
|
@@ -597,6 +600,7 @@ HANDLERS: dict[str, Handler] = {
|
|
|
597
600
|
"view.data.get": view_cmd.view_data_get,
|
|
598
601
|
"view.data.query": view_cmd.view_data_query,
|
|
599
602
|
"view.data.aggregate": view_cmd.view_data_aggregate,
|
|
603
|
+
"view.data.explore": view_cmd.view_data_explore,
|
|
600
604
|
"view.exportable-config.get": view_cmd.view_exportable_config_get,
|
|
601
605
|
"view.exportable-config.apply": view_cmd.view_exportable_config_apply,
|
|
602
606
|
"view.conditional-format.create": view_cmd.view_conditional_format_create,
|
|
@@ -85,7 +85,7 @@ _COMMAND_DISCOVERY_PURPOSES = {
|
|
|
85
85
|
"view.export.onedrive": "one drive onedrive microsoft cloud storage",
|
|
86
86
|
"view.export.postgres": "postgres postgresql database",
|
|
87
87
|
"view.export.powerbi": "power bi powerbi microsoft dashboard workspace",
|
|
88
|
-
"view.export.publish-db": "publish database live connection odbc",
|
|
88
|
+
"view.export.publish-db": "publish database live connection odbc bi tool reads table",
|
|
89
89
|
"view.export.publish-db-update": "publish database update refresh live connection",
|
|
90
90
|
"view.export.redshift": "redshift amazon aws database warehouse",
|
|
91
91
|
"view.export.rest": "webhook http endpoint api push rest",
|
|
@@ -99,7 +99,6 @@ _COMMAND_DISCOVERY_PURPOSES = {
|
|
|
99
99
|
"from a point in the task sequence"
|
|
100
100
|
),
|
|
101
101
|
"view.draft.submit": "apply submit run execute a pending draft changes",
|
|
102
|
-
"webhook.create": "webhook http endpoint api push create",
|
|
103
102
|
"webhook.update": "webhook http endpoint api update",
|
|
104
103
|
"webhook.get": "webhook http endpoint api get",
|
|
105
104
|
"webhook.list": "webhook http endpoint api list",
|
|
@@ -168,10 +167,6 @@ _COMMAND_DISCOVERY_PURPOSES = {
|
|
|
168
167
|
"bring in migrate move transfer switch old existing dashboards dashboard over power "
|
|
169
168
|
"bi report tableau file upload"
|
|
170
169
|
),
|
|
171
|
-
"automation.create": (
|
|
172
|
-
"schedule scheduled recurring repeat refresh rerun run every day daily week weekly "
|
|
173
|
-
"hour hourly month monthly automatically trigger alert email a dataset pipeline"
|
|
174
|
-
),
|
|
175
170
|
# One entry per ``view transform`` command, in the words a user states a
|
|
176
171
|
# goal in rather than Mammoth's own task names. This is the CLI's version
|
|
177
172
|
# of the web app's Transform menu; keep every transform listed.
|
|
@@ -257,6 +252,52 @@ _COMMAND_DISCOVERY_PURPOSES = {
|
|
|
257
252
|
"window rank row number running total cumulative sum moving average lag lead "
|
|
258
253
|
"previous next row partition"
|
|
259
254
|
),
|
|
255
|
+
# The web app's column Explore cards: what is trending, how a column is
|
|
256
|
+
# spread, its top values, a count over time.
|
|
257
|
+
"view.data.explore": (
|
|
258
|
+
"explore trend trends trending over time per day week month quarter year "
|
|
259
|
+
"distribution spread histogram top most common frequent values breakdown share "
|
|
260
|
+
"percentage profile"
|
|
261
|
+
),
|
|
262
|
+
# Goals users state in their own words, one entry per command the agent's
|
|
263
|
+
# system prompt used to spell out by hand.
|
|
264
|
+
"dashboard.suggestion.list": "ideas suggest suggestions what to show put on a board chart",
|
|
265
|
+
"dashboard.analytics": "who viewed seen opened views visitors usage of a board",
|
|
266
|
+
"dashboard.share": "share make live publish board for the team link access",
|
|
267
|
+
"connector.connection.list": "which outside external sources connected connections list",
|
|
268
|
+
"project.pending-changes": (
|
|
269
|
+
"source changes new rows not taken in yet pending updates waiting to apply"
|
|
270
|
+
),
|
|
271
|
+
"project.resource-status": "stuck stale failing broken error status anything wrong health",
|
|
272
|
+
"connector.ai.chat": (
|
|
273
|
+
"connect our own internal custom api build a connector for an unsupported source"
|
|
274
|
+
),
|
|
275
|
+
"project.sample-flow": "sample example demo starter data dataset try start from",
|
|
276
|
+
"webhook.create": (
|
|
277
|
+
"webhook http endpoint api push create data pushed in sent from another system receive"
|
|
278
|
+
),
|
|
279
|
+
"dataset.create-from-pdf": "pdf table document extract into a dataset",
|
|
280
|
+
"view.checkpoint.create": (
|
|
281
|
+
"stop halt pause pipeline alert notify flag when rows match a rule condition checkpoint"
|
|
282
|
+
),
|
|
283
|
+
"view.data-check.create": "data quality check rule validate rows match condition flag",
|
|
284
|
+
"view.derivative.create": "metric kpi number single value to check track daily monitor",
|
|
285
|
+
"view.draft.auto-run": (
|
|
286
|
+
"stop prevent re-running rerun automatically when source changes auto run enable disable"
|
|
287
|
+
),
|
|
288
|
+
"data-app.create": (
|
|
289
|
+
"page portal form others drop upload a file cleaned the same way self service"
|
|
290
|
+
),
|
|
291
|
+
"automation.create": (
|
|
292
|
+
"schedule scheduled recurring repeat refresh rerun run every day daily week weekly "
|
|
293
|
+
"hour hourly month monthly automatically trigger alert email a dataset pipeline "
|
|
294
|
+
"retention purge old data send an emailed file attachment"
|
|
295
|
+
),
|
|
296
|
+
"billing.subscription.update": "upgrade downgrade bigger plan change subscription tier",
|
|
297
|
+
"billing.invoice.list": "past bills billing history invoices payments receipts",
|
|
298
|
+
"project.memory.add": "remember save preference always from now on note for next time",
|
|
299
|
+
"project.memory.list": "remembered saved preferences what do you remember memory",
|
|
300
|
+
"project.memory.remove": "forget remove delete saved preference memory",
|
|
260
301
|
}
|
|
261
302
|
|
|
262
303
|
# A compact string scope is retained for existing discovery consumers. These
|
|
@@ -380,6 +421,10 @@ _DISCOVERY_STOPWORDS = frozenset(
|
|
|
380
421
|
"this",
|
|
381
422
|
"that",
|
|
382
423
|
"how",
|
|
424
|
+
"what",
|
|
425
|
+
"is",
|
|
426
|
+
# The tail of "what's"/"it's" once the apostrophe splits the word.
|
|
427
|
+
"s",
|
|
383
428
|
"do",
|
|
384
429
|
"want",
|
|
385
430
|
"need",
|
|
@@ -978,13 +978,40 @@ def _build_metric_fields(
|
|
|
978
978
|
return {"metric": resolved}, {"metric": resolved["as_name"]}
|
|
979
979
|
|
|
980
980
|
|
|
981
|
+
_METRIC_ANY_TYPE_FUNCTIONS = frozenset({"COUNT", "DISTINCT_COUNT"})
|
|
982
|
+
|
|
983
|
+
|
|
984
|
+
def _require_numeric_metric(
|
|
985
|
+
document: dict[str, Any], column_types: dict[str, str], view_id: int
|
|
986
|
+
) -> None:
|
|
987
|
+
"""Refuse a METRIC the backend cannot compute: it stores a NUMERIC value,
|
|
988
|
+
so only COUNT/DISTINCT_COUNT work on a non-numeric column."""
|
|
989
|
+
metric = document.get("metric")
|
|
990
|
+
if not isinstance(metric, dict):
|
|
991
|
+
return
|
|
992
|
+
column = metric.get("column")
|
|
993
|
+
function = str(metric.get("function", "")).upper()
|
|
994
|
+
column_type = column_types.get(str(column), "")
|
|
995
|
+
if function in _METRIC_ANY_TYPE_FUNCTIONS or column_type in ("", "NUMERIC"):
|
|
996
|
+
return
|
|
997
|
+
raise CliError(
|
|
998
|
+
code=CODE_INVALID_ARGUMENTS,
|
|
999
|
+
message=f"A metric is a number: {function} of the {column_type} column '{column}' "
|
|
1000
|
+
"cannot be computed here.",
|
|
1001
|
+
exit_status=EXIT_USAGE,
|
|
1002
|
+
hint=f"For the latest or earliest value run: mammoth view data explore {view_id} "
|
|
1003
|
+
f'{column} --input \'{{"column_type": "{column_type}", "level": "DAY", '
|
|
1004
|
+
'"sort": "value_desc", "limit": 1}\' (value_asc for the earliest).',
|
|
1005
|
+
)
|
|
1006
|
+
|
|
1007
|
+
|
|
981
1008
|
def view_data_aggregate(invocation: Invocation) -> HandlerResult:
|
|
982
1009
|
"""Aggregate a dataview's data: a PIVOT group-by or a single METRIC value.
|
|
983
1010
|
|
|
984
1011
|
Read-only: computes and returns the aggregated result without adding a
|
|
985
1012
|
task to the view's pipeline or otherwise changing it. Pass exactly one of
|
|
986
1013
|
``aggregations`` (a PIVOT; ``group_by`` is optional) or ``metric`` (a
|
|
987
|
-
METRIC). ``function`` is one of SUM, COUNT, AVG, MIN, MAX. An optional
|
|
1014
|
+
METRIC). ``function`` is one of SUM, COUNT, AVG, MIN, MAX, STDDEV, DISTINCT_COUNT. An optional
|
|
988
1015
|
``condition`` filters rows before aggregating, and ``sequence`` pins the
|
|
989
1016
|
read to a pipeline step (default: latest). Never use ``view transform
|
|
990
1017
|
pivot`` just to read a number — it mutates the view's pipeline.
|
|
@@ -1012,6 +1039,7 @@ def view_data_aggregate(invocation: Invocation) -> HandlerResult:
|
|
|
1012
1039
|
if has_pivot:
|
|
1013
1040
|
fields, as_map = _build_pivot_fields(document, display_to_internal)
|
|
1014
1041
|
else:
|
|
1042
|
+
_require_numeric_metric(document, column_types, view_id)
|
|
1015
1043
|
fields, as_map = _build_metric_fields(document, display_to_internal)
|
|
1016
1044
|
kwargs: dict[str, Any] = {
|
|
1017
1045
|
"dataset_id": dataset_id,
|
|
@@ -1030,6 +1058,74 @@ def view_data_aggregate(invocation: Invocation) -> HandlerResult:
|
|
|
1030
1058
|
return data, _meta(invocation, auth.workspace_id, project_id)
|
|
1031
1059
|
|
|
1032
1060
|
|
|
1061
|
+
def _require_string_positional_at(invocation: Invocation, index: int, name: str) -> str:
|
|
1062
|
+
"""Return the positional argument at ``index`` as a nonblank string, or raise."""
|
|
1063
|
+
if len(invocation.extra_args) <= index or not str(invocation.extra_args[index]).strip():
|
|
1064
|
+
raise CliError(
|
|
1065
|
+
code=CODE_MISSING_ARGUMENT,
|
|
1066
|
+
message=f"This command requires a {name} argument.",
|
|
1067
|
+
exit_status=EXIT_USAGE,
|
|
1068
|
+
hint=f"Pass the {name} as a positional argument.",
|
|
1069
|
+
)
|
|
1070
|
+
return str(invocation.extra_args[index])
|
|
1071
|
+
|
|
1072
|
+
|
|
1073
|
+
def view_data_explore(invocation: Invocation) -> HandlerResult:
|
|
1074
|
+
"""Explore one column: trend, distribution, or top values, like the web app's
|
|
1075
|
+
column Explore card.
|
|
1076
|
+
|
|
1077
|
+
Read-only: computes and returns the result without adding a task to the
|
|
1078
|
+
view's pipeline or otherwise changing it. Buckets by the column's type --
|
|
1079
|
+
a DATE column by ``level`` (default "AUTO"; or DAY/WEEK/MONTH/QUARTER/
|
|
1080
|
+
YEAR/...) for a trend "over time"/"by month"/"by year"; a NUMERIC column
|
|
1081
|
+
by ``level`` resolution (default "AUTO") for a distribution/histogram; any
|
|
1082
|
+
other column (TEXT) as its top values by count, ``limit`` (default 20).
|
|
1083
|
+
Every bucket carries ``count`` and ``percentage`` of the column's total.
|
|
1084
|
+
An optional ``metric`` ``{"column": ..., "function": ...}`` (SUM, COUNT,
|
|
1085
|
+
AVG, MIN, MAX, STDDEV or DISTINCT_COUNT) adds a second aggregate per bucket over another column,
|
|
1086
|
+
and an optional ``condition`` filters rows first -- same as ``view data
|
|
1087
|
+
aggregate``, which this command wraps for the raw PIVOT shape. Never use
|
|
1088
|
+
``view transform pivot`` just to explore a column; it mutates the
|
|
1089
|
+
pipeline.
|
|
1090
|
+
"""
|
|
1091
|
+
project_id = require_project(invocation)
|
|
1092
|
+
view_id = _require_int_positional_at(invocation, 0, "view id")
|
|
1093
|
+
column_arg = _require_string_positional_at(invocation, 1, "column")
|
|
1094
|
+
document = invocation.load_input() or {}
|
|
1095
|
+
with open_service(invocation) as (service, auth):
|
|
1096
|
+
dataset_id = _resolve_dataset_id(service, invocation, view_id, document, 2)
|
|
1097
|
+
internal_to_display, column_types = _column_profile(
|
|
1098
|
+
service, dataset_id, view_id, project_id
|
|
1099
|
+
)
|
|
1100
|
+
display_to_internal = {
|
|
1101
|
+
display: internal for internal, display in internal_to_display.items()
|
|
1102
|
+
}
|
|
1103
|
+
internal_column = display_to_internal.get(column_arg, column_arg)
|
|
1104
|
+
column_type = column_types.get(column_arg, "")
|
|
1105
|
+
kwargs: dict[str, Any] = {
|
|
1106
|
+
"dataset_id": dataset_id,
|
|
1107
|
+
"dataview_id": view_id,
|
|
1108
|
+
"project_id": project_id,
|
|
1109
|
+
"column": internal_column,
|
|
1110
|
+
"column_type": column_type,
|
|
1111
|
+
}
|
|
1112
|
+
as_map: dict[str, str] = {"group_0": "bucket", "agg_0": "count"}
|
|
1113
|
+
metric = document.get("metric")
|
|
1114
|
+
if isinstance(metric, dict):
|
|
1115
|
+
resolved_metric = _resolved_aggregate_item(metric, display_to_internal)
|
|
1116
|
+
kwargs["metric"] = resolved_metric
|
|
1117
|
+
as_map["agg_1"] = resolved_metric["as_name"]
|
|
1118
|
+
if document.get(CONDITION_KWARG) is not None:
|
|
1119
|
+
compiled = compile_condition(document[CONDITION_KWARG])
|
|
1120
|
+
kwargs[CONDITION_KWARG] = compiled.build(
|
|
1121
|
+
display_to_internal or None, column_types or None
|
|
1122
|
+
)
|
|
1123
|
+
_forward_optional(document, kwargs, ("level", "sequence", "limit", "offset", "sort"))
|
|
1124
|
+
data = service.call(_symbol(invocation), **kwargs)
|
|
1125
|
+
data = _relabel_columns(service, dataset_id, view_id, project_id, data, as_map)
|
|
1126
|
+
return data, _meta(invocation, auth.workspace_id, project_id)
|
|
1127
|
+
|
|
1128
|
+
|
|
1033
1129
|
def view_exportable_config_get(invocation: Invocation) -> HandlerResult:
|
|
1034
1130
|
"""Get a dataview's exportable pipeline configuration."""
|
|
1035
1131
|
project_id = require_project(invocation)
|
|
@@ -435,6 +435,9 @@ S2_COMMANDS = frozenset(
|
|
|
435
435
|
"project.delete",
|
|
436
436
|
"project.get",
|
|
437
437
|
"project.list",
|
|
438
|
+
"project.memory.add",
|
|
439
|
+
"project.memory.list",
|
|
440
|
+
"project.memory.remove",
|
|
438
441
|
"project.pending-changes",
|
|
439
442
|
"project.publish-credentials",
|
|
440
443
|
"project.resource-dependencies",
|
|
@@ -261,6 +261,9 @@ POSITIONAL_OVERRIDES: dict[str, tuple[PositionalSpec, ...]] = {
|
|
|
261
261
|
"project.get": _optional_project_id(),
|
|
262
262
|
"project.check": _optional_project_id(),
|
|
263
263
|
"project.pending-changes": _optional_project_id(),
|
|
264
|
+
"project.memory.list": _optional_project_id(),
|
|
265
|
+
"project.memory.add": _optional_project_id(),
|
|
266
|
+
"project.memory.remove": _optional_project_id(),
|
|
264
267
|
"project.resource-status": _optional_project_id(),
|
|
265
268
|
"project.resource-dependencies": _optional_project_id(),
|
|
266
269
|
"project.resource-dependencies.update": _optional_project_id(),
|
|
@@ -617,6 +620,34 @@ POSITIONAL_OVERRIDES: dict[str, tuple[PositionalSpec, ...]] = {
|
|
|
617
620
|
("view.version.update", "version_id", "ID of the pipeline version."),
|
|
618
621
|
)
|
|
619
622
|
},
|
|
623
|
+
# ``view data explore`` takes VIEW_ID first, then the required COLUMN (a
|
|
624
|
+
# display name, not an id -- the only ``str``-typed sub-positional in this
|
|
625
|
+
# family), then the OPTIONAL trailing DATASET_ID resolved from the view,
|
|
626
|
+
# mirroring the sub-resource commands above. ``column`` is a real,
|
|
627
|
+
# positional-sourced parameter of ``DataviewsAPI.explore``, so it stays out
|
|
628
|
+
# of the advertised --input fields without needing ``fills_sdk_param``.
|
|
629
|
+
"view.data.explore": (
|
|
630
|
+
PositionalSpec(
|
|
631
|
+
name="view_id",
|
|
632
|
+
type=int,
|
|
633
|
+
required=True,
|
|
634
|
+
help="ID of the view to act on.",
|
|
635
|
+
fills_sdk_param="dataview_id",
|
|
636
|
+
),
|
|
637
|
+
PositionalSpec(
|
|
638
|
+
name="column",
|
|
639
|
+
type=str,
|
|
640
|
+
required=True,
|
|
641
|
+
help="Display name of the column to explore.",
|
|
642
|
+
),
|
|
643
|
+
PositionalSpec(
|
|
644
|
+
name="dataset_id",
|
|
645
|
+
type=int,
|
|
646
|
+
required=False,
|
|
647
|
+
help="ID of the dataset the view belongs to; resolved from the view when omitted.",
|
|
648
|
+
falls_back_to_field="dataset_id",
|
|
649
|
+
),
|
|
650
|
+
),
|
|
620
651
|
# ``billing hosted-page`` takes the page's object type as a positional OR an
|
|
621
652
|
# ``object_type`` --input field (handler dual-sources
|
|
622
653
|
# ``_string_positional(invocation) or document.get("object_type")``). The SDK
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
[project]
|
|
2
2
|
name = "mammoth-cli"
|
|
3
|
-
version = "2.0.
|
|
3
|
+
version = "2.0.66"
|
|
4
4
|
description = "Command-line interface for the Mammoth Analytics platform"
|
|
5
5
|
authors = [{name = "Mammoth Analytics", email = "support@mammoth.io"}]
|
|
6
6
|
readme = "README.md"
|
|
7
7
|
license = "LicenseRef-Proprietary"
|
|
8
8
|
requires-python = ">=3.12,<3.15"
|
|
9
9
|
dependencies = [
|
|
10
|
-
"mammoth-io (>=0.7.
|
|
10
|
+
"mammoth-io (>=0.7.32,<0.8)",
|
|
11
11
|
"typer (>=0.27,<0.28)",
|
|
12
12
|
"rich (>=15,<16)",
|
|
13
13
|
"platformdirs (>=4.10,<5)",
|
|
@@ -40,7 +40,9 @@ commands:
|
|
|
40
40
|
draft_test: null
|
|
41
41
|
undo_test: null
|
|
42
42
|
known_restrictions: 'B15 AUTOMATION_EXTERNAL_EFFECTS: task models can pull cloud files and send email;
|
|
43
|
-
requires connector/email allowlists and dedicated fixtures.
|
|
43
|
+
requires connector/email allowlists and dedicated fixtures. Delete old rows on a schedule with
|
|
44
|
+
task apply_retention_policy (datasource_id, rule_type time_based, count_based or
|
|
45
|
+
condition_based). An emailed file is task send_an_alert with attachments.dataview_ids.'
|
|
44
46
|
reviewed_by: primary
|
|
45
47
|
- command_id: automation.delete
|
|
46
48
|
command_path: automation delete
|
|
@@ -283,7 +283,8 @@ commands:
|
|
|
283
283
|
bi-preflight. Terminal mode writes `output_path` to local disk. Inside the Mammoth app the
|
|
284
284
|
download cannot reach the user: run `dashboard bi-preflight` to tell them what will convert,
|
|
285
285
|
then send them to the dashboard's Publish menu (the arrow next to Publish) -> Export to Power
|
|
286
|
-
BI / Export to Tableau, where they download the file themselves.
|
|
286
|
+
BI / Export to Tableau, where they download the file themselves. No command makes a PDF of a
|
|
287
|
+
board: that is the board's Download PDF in the app."
|
|
287
288
|
reviewed_by: primary
|
|
288
289
|
- command_id: dashboard.cancel-generation
|
|
289
290
|
command_path: dashboard cancel-generation
|
|
@@ -317,7 +317,8 @@ commands:
|
|
|
317
317
|
upload well under 16 MB: split larger files or upload a zip/gz. Parsing is asynchronous; use --timeout 300 for files past a few MB and poll the returned
|
|
318
318
|
job on timeout. Upload authorization is tenant- and scope-specific; a permission failure does not
|
|
319
319
|
make this route universally unavailable. On success retain returned IDs, read them back, and
|
|
320
|
-
verify owned cleanup; do not assume other upload variants are qualified.
|
|
320
|
+
verify owned cleanup; do not assume other upload variants are qualified. Each sheet of an Excel
|
|
321
|
+
file becomes its own dataset.'
|
|
321
322
|
reviewed_by: primary
|
|
322
323
|
- command_id: file.upload-folder
|
|
323
324
|
command_path: file upload-folder
|
|
@@ -384,6 +384,123 @@ commands:
|
|
|
384
384
|
undo_test: null
|
|
385
385
|
known_restrictions: 'B01 FIRST_PAGE_ONLY: no offset/cursor continuation proven yet.'
|
|
386
386
|
reviewed_by: primary
|
|
387
|
+
- command_id: project.memory.list
|
|
388
|
+
command_path: project memory list
|
|
389
|
+
disposition: command
|
|
390
|
+
alias_of: null
|
|
391
|
+
operation_ids: []
|
|
392
|
+
positionals:
|
|
393
|
+
- name: project_id
|
|
394
|
+
type: int
|
|
395
|
+
required: false
|
|
396
|
+
metavar: PROJECT_ID
|
|
397
|
+
falls_back_to_field: null
|
|
398
|
+
help: ID of the project to act on; defaults to the active project.
|
|
399
|
+
options: []
|
|
400
|
+
sdk_symbol: mammoth.api.projects.ProjectsAPI.list_agent_memory
|
|
401
|
+
sdk_conversion: Call mammoth.api.projects.ProjectsAPI.list_agent_memory with validated request fields.
|
|
402
|
+
request_model: ProjectMemoryListRequest
|
|
403
|
+
result_model: ProjectMemoryListResult
|
|
404
|
+
mutation_class: read
|
|
405
|
+
confirmation: none
|
|
406
|
+
wait_policy: not_async
|
|
407
|
+
pagination_policy: none
|
|
408
|
+
acceptance_evidence: contract_only_no_disposable_fixture
|
|
409
|
+
live_test: null
|
|
410
|
+
live_exemption_reason: No automated disposable-project fixture wired into tests/live yet for this command.
|
|
411
|
+
contract_fixture: null
|
|
412
|
+
required_fixture_guard: null
|
|
413
|
+
secret_fields: []
|
|
414
|
+
human_example: mammoth project memory list --help
|
|
415
|
+
agent_example: 'mammoth project memory list 123'
|
|
416
|
+
unit_tests:
|
|
417
|
+
- UT-PROJECT-MEMORY-LIST
|
|
418
|
+
contract_tests:
|
|
419
|
+
- CT-PROJECT-MEMORY-LIST-HUMAN
|
|
420
|
+
- CT-PROJECT-MEMORY-LIST-JSON
|
|
421
|
+
- CT-PROJECT-MEMORY-LIST-ERROR
|
|
422
|
+
draft_test: null
|
|
423
|
+
undo_test: null
|
|
424
|
+
known_restrictions: 'The saved preferences are the caller''s own, per project, oldest first; the in-app agent reads them at the start of every turn. Remove one by its zero-based position in this list.'
|
|
425
|
+
reviewed_by: primary
|
|
426
|
+
- command_id: project.memory.add
|
|
427
|
+
command_path: project memory add
|
|
428
|
+
disposition: command
|
|
429
|
+
alias_of: null
|
|
430
|
+
operation_ids: []
|
|
431
|
+
positionals:
|
|
432
|
+
- name: project_id
|
|
433
|
+
type: int
|
|
434
|
+
required: false
|
|
435
|
+
metavar: PROJECT_ID
|
|
436
|
+
falls_back_to_field: null
|
|
437
|
+
help: ID of the project to act on; defaults to the active project.
|
|
438
|
+
options: []
|
|
439
|
+
sdk_symbol: mammoth.api.projects.ProjectsAPI.add_agent_memory
|
|
440
|
+
sdk_conversion: Call mammoth.api.projects.ProjectsAPI.add_agent_memory with validated request fields.
|
|
441
|
+
request_model: ProjectMemoryAddRequest
|
|
442
|
+
result_model: ProjectMemoryAddResult
|
|
443
|
+
mutation_class: benign_mutation
|
|
444
|
+
confirmation: none
|
|
445
|
+
wait_policy: not_async
|
|
446
|
+
pagination_policy: none
|
|
447
|
+
acceptance_evidence: contract_only_no_disposable_fixture
|
|
448
|
+
live_test: null
|
|
449
|
+
live_exemption_reason: No automated disposable-project fixture wired into tests/live yet for this command.
|
|
450
|
+
contract_fixture: null
|
|
451
|
+
required_fixture_guard: null
|
|
452
|
+
secret_fields: []
|
|
453
|
+
human_example: mammoth project memory add --help
|
|
454
|
+
agent_example: 'mammoth project memory add 123 --input ''{"text": "sample"}'''
|
|
455
|
+
unit_tests:
|
|
456
|
+
- UT-PROJECT-MEMORY-ADD
|
|
457
|
+
contract_tests:
|
|
458
|
+
- CT-PROJECT-MEMORY-ADD-HUMAN
|
|
459
|
+
- CT-PROJECT-MEMORY-ADD-JSON
|
|
460
|
+
- CT-PROJECT-MEMORY-ADD-ERROR
|
|
461
|
+
draft_test: null
|
|
462
|
+
undo_test: null
|
|
463
|
+
known_restrictions: 'Save only a preference the user stated for how the agent works or shows things (at most 20, each at most 200 characters); never data, results or secrets. The in-app agent applies them in every later turn in this project.'
|
|
464
|
+
reviewed_by: primary
|
|
465
|
+
- command_id: project.memory.remove
|
|
466
|
+
command_path: project memory remove
|
|
467
|
+
disposition: command
|
|
468
|
+
alias_of: null
|
|
469
|
+
operation_ids: []
|
|
470
|
+
positionals:
|
|
471
|
+
- name: project_id
|
|
472
|
+
type: int
|
|
473
|
+
required: false
|
|
474
|
+
metavar: PROJECT_ID
|
|
475
|
+
falls_back_to_field: null
|
|
476
|
+
help: ID of the project to act on; defaults to the active project.
|
|
477
|
+
options: []
|
|
478
|
+
sdk_symbol: mammoth.api.projects.ProjectsAPI.remove_agent_memory
|
|
479
|
+
sdk_conversion: Call mammoth.api.projects.ProjectsAPI.remove_agent_memory with validated request fields.
|
|
480
|
+
request_model: ProjectMemoryRemoveRequest
|
|
481
|
+
result_model: ProjectMemoryRemoveResult
|
|
482
|
+
mutation_class: benign_mutation
|
|
483
|
+
confirmation: none
|
|
484
|
+
wait_policy: not_async
|
|
485
|
+
pagination_policy: none
|
|
486
|
+
acceptance_evidence: contract_only_no_disposable_fixture
|
|
487
|
+
live_test: null
|
|
488
|
+
live_exemption_reason: No automated disposable-project fixture wired into tests/live yet for this command.
|
|
489
|
+
contract_fixture: null
|
|
490
|
+
required_fixture_guard: null
|
|
491
|
+
secret_fields: []
|
|
492
|
+
human_example: mammoth project memory remove --help
|
|
493
|
+
agent_example: 'mammoth project memory remove 123 --input ''{"index": 1}'''
|
|
494
|
+
unit_tests:
|
|
495
|
+
- UT-PROJECT-MEMORY-REMOVE
|
|
496
|
+
contract_tests:
|
|
497
|
+
- CT-PROJECT-MEMORY-REMOVE-HUMAN
|
|
498
|
+
- CT-PROJECT-MEMORY-REMOVE-JSON
|
|
499
|
+
- CT-PROJECT-MEMORY-REMOVE-ERROR
|
|
500
|
+
draft_test: null
|
|
501
|
+
undo_test: null
|
|
502
|
+
known_restrictions: 'index is the zero-based position from project memory list; use it when the user asks to forget a preference.'
|
|
503
|
+
reviewed_by: primary
|
|
387
504
|
- command_id: project.pending-changes
|
|
388
505
|
command_path: project pending-changes
|
|
389
506
|
disposition: command
|